multiwoven-integrations 0.1.1 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.vscode/settings.json +5 -0
- data/lib/multiwoven/integrations/core/base_connector.rb +3 -3
- data/lib/multiwoven/integrations/core/constants.rb +2 -0
- data/lib/multiwoven/integrations/core/source_connector.rb +17 -0
- data/lib/multiwoven/integrations/core/utils.rb +8 -0
- data/lib/multiwoven/integrations/destination/facebook_custom_audience/client.rb +123 -0
- data/lib/multiwoven/integrations/destination/facebook_custom_audience/config/catalog.json +38 -0
- data/lib/multiwoven/integrations/destination/facebook_custom_audience/config/meta.json +15 -0
- data/lib/multiwoven/integrations/destination/facebook_custom_audience/config/spec.json +22 -0
- data/lib/multiwoven/integrations/destination/klaviyo/client.rb +11 -3
- data/lib/multiwoven/integrations/destination/klaviyo/config/catalog.json +86 -88
- data/lib/multiwoven/integrations/destination/klaviyo/config/meta.json +1 -1
- data/lib/multiwoven/integrations/destination/klaviyo/config/spec.json +2 -2
- data/lib/multiwoven/integrations/destination/salesforce_crm/client.rb +127 -0
- data/lib/multiwoven/integrations/destination/salesforce_crm/config/catalog.json +317 -0
- data/lib/multiwoven/integrations/destination/salesforce_crm/config/meta.json +15 -0
- data/lib/multiwoven/integrations/destination/salesforce_crm/config/spec.json +37 -0
- data/lib/multiwoven/integrations/destination/slack/client.rb +125 -0
- data/lib/multiwoven/integrations/destination/slack/config/catalog.json +71 -0
- data/lib/multiwoven/integrations/destination/slack/config/meta.json +14 -0
- data/lib/multiwoven/integrations/destination/slack/config/spec.json +22 -0
- data/lib/multiwoven/integrations/protocol/protocol.rb +2 -0
- data/lib/multiwoven/integrations/rollout.rb +4 -1
- data/lib/multiwoven/integrations/source/bigquery/client.rb +6 -0
- data/lib/multiwoven/integrations/source/bigquery/config/meta.json +1 -1
- data/lib/multiwoven/integrations/source/redshift/client.rb +5 -0
- data/lib/multiwoven/integrations/source/redshift/config/meta.json +1 -1
- data/lib/multiwoven/integrations/source/snowflake/client.rb +5 -0
- data/lib/multiwoven/integrations/source/snowflake/config/meta.json +1 -1
- data/lib/multiwoven/integrations.rb +6 -0
- data/multiwoven-integrations.gemspec +10 -6
- metadata +65 -8
@@ -7,6 +7,7 @@ module Multiwoven::Integrations::Source
|
|
7
7
|
include Multiwoven::Integrations::Core
|
8
8
|
class Client < SourceConnector
|
9
9
|
def check_connection(connection_config)
|
10
|
+
connection_config = connection_config.with_indifferent_access
|
10
11
|
create_connection(connection_config)
|
11
12
|
ConnectionStatus.new(
|
12
13
|
status: ConnectionStatusType["succeeded"]
|
@@ -18,6 +19,7 @@ module Multiwoven::Integrations::Source
|
|
18
19
|
end
|
19
20
|
|
20
21
|
def discover(connection_config)
|
22
|
+
connection_config = connection_config.with_indifferent_access
|
21
23
|
query = "SELECT table_name, column_name, data_type, is_nullable
|
22
24
|
FROM information_schema.columns
|
23
25
|
WHERE table_schema = '#{connection_config[:schema]}' AND table_catalog = '#{connection_config[:database]}'
|
@@ -43,7 +45,10 @@ module Multiwoven::Integrations::Source
|
|
43
45
|
|
44
46
|
def read(sync_config)
|
45
47
|
connection_config = sync_config.source.connection_specification
|
48
|
+
connection_config = connection_config.with_indifferent_access
|
46
49
|
query = sync_config.model.query
|
50
|
+
query = batched_query(query, sync_config.limit, sync_config.offset) unless sync_config.limit.nil? && sync_config.offset.nil?
|
51
|
+
|
47
52
|
db = create_connection(connection_config)
|
48
53
|
records = db.exec(query) do |result|
|
49
54
|
result.map do |row|
|
@@ -5,6 +5,7 @@ module Multiwoven::Integrations::Source
|
|
5
5
|
include Multiwoven::Integrations::Core
|
6
6
|
class Client < SourceConnector
|
7
7
|
def check_connection(connection_config)
|
8
|
+
connection_config = connection_config.with_indifferent_access
|
8
9
|
create_connection(connection_config)
|
9
10
|
ConnectionStatus.new(status: ConnectionStatusType["succeeded"]).to_multiwoven_message
|
10
11
|
rescue Sequel::DatabaseConnectionError => e
|
@@ -12,6 +13,7 @@ module Multiwoven::Integrations::Source
|
|
12
13
|
end
|
13
14
|
|
14
15
|
def discover(connection_config)
|
16
|
+
connection_config = connection_config.with_indifferent_access
|
15
17
|
query = "SELECT table_name, column_name, data_type, is_nullable
|
16
18
|
FROM information_schema.columns
|
17
19
|
WHERE table_schema = \'#{connection_config[:schema]}\' AND table_catalog = \'#{connection_config[:database]}\'
|
@@ -35,7 +37,10 @@ module Multiwoven::Integrations::Source
|
|
35
37
|
|
36
38
|
def read(sync_config)
|
37
39
|
connection_config = sync_config.source.connection_specification
|
40
|
+
connection_config = connection_config.with_indifferent_access
|
38
41
|
query = sync_config.model.query
|
42
|
+
query = batched_query(query, sync_config.limit, sync_config.offset) unless sync_config.limit.nil? && sync_config.offset.nil?
|
43
|
+
|
39
44
|
db = create_connection(connection_config)
|
40
45
|
|
41
46
|
records = []
|
@@ -10,6 +10,9 @@ require "byebug"
|
|
10
10
|
require "net/http"
|
11
11
|
require "uri"
|
12
12
|
require "active_support/core_ext/hash/indifferent_access"
|
13
|
+
require "restforce"
|
14
|
+
require "logger"
|
15
|
+
require "slack-ruby-client"
|
13
16
|
|
14
17
|
# Service
|
15
18
|
require_relative "integrations/config"
|
@@ -32,6 +35,9 @@ require_relative "integrations/source/bigquery/client"
|
|
32
35
|
|
33
36
|
# Destination
|
34
37
|
require_relative "integrations/destination/klaviyo/client"
|
38
|
+
require_relative "integrations/destination/salesforce_crm/client"
|
39
|
+
require_relative "integrations/destination/facebook_custom_audience/client"
|
40
|
+
require_relative "integrations/destination/slack/client"
|
35
41
|
|
36
42
|
module Multiwoven
|
37
43
|
module Integrations
|
@@ -8,17 +8,18 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.authors = ["Subin T P"]
|
9
9
|
spec.email = ["subin@multiwoven.com"]
|
10
10
|
|
11
|
-
spec.summary = "
|
12
|
-
spec.description = "
|
11
|
+
spec.summary = "Integration suite for open source reverse ETL platform"
|
12
|
+
spec.description = "Multiwoven Integrations is a comprehensive Ruby gem designed to facilitate seamless connectivity between various data sources and SaaS platforms."
|
13
|
+
|
13
14
|
spec.homepage = "https://www.multiwoven.com/"
|
14
15
|
spec.license = "MIT"
|
15
16
|
spec.required_ruby_version = ">= 2.6.0"
|
16
17
|
|
17
18
|
# spec.metadata["allowed_push_host"] = nil
|
18
|
-
|
19
|
+
spec.metadata["github_repo"] = "https://github.com/Multiwoven/multiwoven-integrations"
|
19
20
|
spec.metadata["homepage_uri"] = spec.homepage
|
20
|
-
spec.metadata["source_code_uri"] = "https://
|
21
|
-
spec.metadata["changelog_uri"] = "https://
|
21
|
+
spec.metadata["source_code_uri"] = "https://github.com/Multiwoven/multiwoven-integrations"
|
22
|
+
spec.metadata["changelog_uri"] = "https://github.com/Multiwoven/multiwoven-integrations/blob/master/CHANGELOG.md"
|
22
23
|
|
23
24
|
# Specify which files should be added to the gem when it is released.
|
24
25
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
@@ -33,14 +34,17 @@ Gem::Specification.new do |spec|
|
|
33
34
|
spec.require_paths = ["lib"]
|
34
35
|
|
35
36
|
spec.add_runtime_dependency "activesupport"
|
37
|
+
spec.add_runtime_dependency "async-websocket"
|
36
38
|
spec.add_runtime_dependency "dry-schema"
|
37
39
|
spec.add_runtime_dependency "dry-struct"
|
38
40
|
spec.add_runtime_dependency "dry-types"
|
39
41
|
spec.add_runtime_dependency "google-cloud-bigquery"
|
40
42
|
spec.add_runtime_dependency "pg"
|
41
43
|
spec.add_runtime_dependency "rake"
|
42
|
-
spec.add_runtime_dependency "
|
44
|
+
spec.add_runtime_dependency "restforce"
|
45
|
+
spec.add_runtime_dependency "ruby-odbc"
|
43
46
|
spec.add_runtime_dependency "sequel"
|
47
|
+
spec.add_runtime_dependency "slack-ruby-client"
|
44
48
|
|
45
49
|
spec.add_development_dependency "byebug"
|
46
50
|
spec.add_development_dependency "rspec"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: multiwoven-integrations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Subin T P
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-01-
|
11
|
+
date: 2024-01-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: async-websocket
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: dry-schema
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -109,7 +123,21 @@ dependencies:
|
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: '0'
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
126
|
+
name: restforce
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: ruby-odbc
|
113
141
|
requirement: !ruby/object:Gem::Requirement
|
114
142
|
requirements:
|
115
143
|
- - ">="
|
@@ -136,6 +164,20 @@ dependencies:
|
|
136
164
|
- - ">="
|
137
165
|
- !ruby/object:Gem::Version
|
138
166
|
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: slack-ruby-client
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :runtime
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
139
181
|
- !ruby/object:Gem::Dependency
|
140
182
|
name: byebug
|
141
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -220,7 +262,8 @@ dependencies:
|
|
220
262
|
- - ">="
|
221
263
|
- !ruby/object:Gem::Version
|
222
264
|
version: '0'
|
223
|
-
description:
|
265
|
+
description: Multiwoven Integrations is a comprehensive Ruby gem designed to facilitate
|
266
|
+
seamless connectivity between various data sources and SaaS platforms.
|
224
267
|
email:
|
225
268
|
- subin@multiwoven.com
|
226
269
|
executables: []
|
@@ -230,6 +273,7 @@ files:
|
|
230
273
|
- ".rspec"
|
231
274
|
- ".rubocop.yml"
|
232
275
|
- ".ruby-version"
|
276
|
+
- ".vscode/settings.json"
|
233
277
|
- CHANGELOG.md
|
234
278
|
- CODE_OF_CONDUCT.md
|
235
279
|
- LICENSE.txt
|
@@ -243,10 +287,22 @@ files:
|
|
243
287
|
- lib/multiwoven/integrations/core/http_client.rb
|
244
288
|
- lib/multiwoven/integrations/core/source_connector.rb
|
245
289
|
- lib/multiwoven/integrations/core/utils.rb
|
290
|
+
- lib/multiwoven/integrations/destination/facebook_custom_audience/client.rb
|
291
|
+
- lib/multiwoven/integrations/destination/facebook_custom_audience/config/catalog.json
|
292
|
+
- lib/multiwoven/integrations/destination/facebook_custom_audience/config/meta.json
|
293
|
+
- lib/multiwoven/integrations/destination/facebook_custom_audience/config/spec.json
|
246
294
|
- lib/multiwoven/integrations/destination/klaviyo/client.rb
|
247
295
|
- lib/multiwoven/integrations/destination/klaviyo/config/catalog.json
|
248
296
|
- lib/multiwoven/integrations/destination/klaviyo/config/meta.json
|
249
297
|
- lib/multiwoven/integrations/destination/klaviyo/config/spec.json
|
298
|
+
- lib/multiwoven/integrations/destination/salesforce_crm/client.rb
|
299
|
+
- lib/multiwoven/integrations/destination/salesforce_crm/config/catalog.json
|
300
|
+
- lib/multiwoven/integrations/destination/salesforce_crm/config/meta.json
|
301
|
+
- lib/multiwoven/integrations/destination/salesforce_crm/config/spec.json
|
302
|
+
- lib/multiwoven/integrations/destination/slack/client.rb
|
303
|
+
- lib/multiwoven/integrations/destination/slack/config/catalog.json
|
304
|
+
- lib/multiwoven/integrations/destination/slack/config/meta.json
|
305
|
+
- lib/multiwoven/integrations/destination/slack/config/spec.json
|
250
306
|
- lib/multiwoven/integrations/protocol/protocol.json
|
251
307
|
- lib/multiwoven/integrations/protocol/protocol.rb
|
252
308
|
- lib/multiwoven/integrations/rollout.rb
|
@@ -266,9 +322,10 @@ homepage: https://www.multiwoven.com/
|
|
266
322
|
licenses:
|
267
323
|
- MIT
|
268
324
|
metadata:
|
325
|
+
github_repo: https://github.com/Multiwoven/multiwoven-integrations
|
269
326
|
homepage_uri: https://www.multiwoven.com/
|
270
|
-
source_code_uri: https://
|
271
|
-
changelog_uri: https://
|
327
|
+
source_code_uri: https://github.com/Multiwoven/multiwoven-integrations
|
328
|
+
changelog_uri: https://github.com/Multiwoven/multiwoven-integrations/blob/master/CHANGELOG.md
|
272
329
|
post_install_message:
|
273
330
|
rdoc_options: []
|
274
331
|
require_paths:
|
@@ -284,8 +341,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
284
341
|
- !ruby/object:Gem::Version
|
285
342
|
version: '0'
|
286
343
|
requirements: []
|
287
|
-
rubygems_version: 3.
|
344
|
+
rubygems_version: 3.5.3
|
288
345
|
signing_key:
|
289
346
|
specification_version: 4
|
290
|
-
summary:
|
347
|
+
summary: Integration suite for open source reverse ETL platform
|
291
348
|
test_files: []
|