redshift-connector-queuery 8.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d767e23fc7ef3ab2978e28744903fba36b7bb84f
4
+ data.tar.gz: ae3986f41bc6dde1bd7e3b3ca18ab0da426111d8
5
+ SHA512:
6
+ metadata.gz: '09863e2679827b01eeaf9bd604401a78af0069e2c5e7d65f6e1138c57c69d7554df52df2b0fff9416502a4dcf73ae93faabdd69fdb622604ad11ce423a7bb6f9'
7
+ data.tar.gz: 65fd7ad93fbe99a87bffa6c372e3080d46bfbfc74812309489601ddf9d090a5122434ea06ee19b4965c8042be0d54281d762292a4634be1bd83dad6be440f0ca
data/README.md ADDED
@@ -0,0 +1,15 @@
1
+ # redshift-connector-queuery
2
+
3
+ Queuery Redshift HTTP API adapter for redshift-connector.
4
+
5
+ ## Setup
6
+
7
+ Add `config/initializer/redshift-connector.rb` as following:
8
+ ```
9
+ QueueryClient.configure do |config|
10
+ config.endpoint = "https://queuery.example.com"
11
+ config.token = "xxxxxxxxxx"
12
+ config.token_secret = "yyyyyyyyyy"
13
+ end
14
+ RedshiftConnector::Exporter.default_data_source = RedshiftConnector::QueueryDataSource.new
15
+ ```
@@ -0,0 +1,2 @@
1
+ require 'redshift_connector/queuery_data_source'
2
+ require 'redshift_connector/queuery_exporter'
@@ -0,0 +1,22 @@
1
+ require 'redshift_connector/queuery_exporter'
2
+ require 'redshift_connector/exporter_builder'
3
+ require 'redshift_connector/exception'
4
+ require 'queuery_client/client'
5
+
6
+ module RedshiftConnector
7
+ class QueueryDataSource
8
+ def initialize(client = nil)
9
+ @client = client || QueueryClient::Client.new
10
+ end
11
+
12
+ def exporter_builder
13
+ ExporterBuilder.new(ds: self, exporter_class: QueueryExporter)
14
+ end
15
+
16
+ def execute_query(stmt, params = [])
17
+ @client.query(stmt, params)
18
+ rescue QueueryClient::QueryError => ex
19
+ raise ExportError, ex.message
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,28 @@
1
+ require 'redshift_connector/logger'
2
+
3
+ module RedshiftConnector
4
+ class QueueryExporter
5
+ def initialize(ds:, query:, bundle_params: nil, enable_sort: false, logger: RedshiftConnector.logger)
6
+ @ds = ds
7
+ @query = query
8
+ @bundle_params = bundle_params
9
+ @bundle = nil
10
+ @enable_sort = enable_sort
11
+ @logger = logger
12
+ end
13
+
14
+ attr_reader :query
15
+ attr_reader :bundle_params
16
+ attr_reader :bundle
17
+ attr_reader :logger
18
+
19
+ def execute
20
+ @logger.info "EXPORT #{@query.description} -> (Queuery S3 tmp)"
21
+ stmt = @query.to_sql
22
+ @logger.info "[SQL/Queuery] #{stmt.strip}"
23
+ # FIXME: support enable_sort
24
+ @bundle = @ds.execute_query(stmt)
25
+ @bundle
26
+ end
27
+ end
28
+ end
data/test/config.rb ADDED
@@ -0,0 +1,16 @@
1
+ GarageClient.configure do |config|
2
+ config.name = "redshift-connector-queuery"
3
+ end
4
+
5
+ QueueryClient.configure do |config|
6
+ config.endpoint = 'https://queuery.ckpd.co'
7
+ # app: aamine-test
8
+ config.token = "606C6UDNdYGz7RY9Y0Cd2ZqTcmTHqvMlxY5KxB2md84"
9
+ config.token_secret = "kgLOgJgbi8_XMfK6bEUbMFWJT6-LZBYx_om4ZtBvGzIuHuC7YCeWNLUHtqUIgWxMQ0rtlaVMzLk9gOCb-J50yw"
10
+ end
11
+
12
+ $TEST_SCHEMA = 'aamine'
13
+
14
+ module RedshiftConnector
15
+ Exporter.default_data_source = QueueryDataSource.new
16
+ end
data/test/database.yml ADDED
@@ -0,0 +1,6 @@
1
+ mysql:
2
+ adapter: mysql2
3
+ host: localhost
4
+ username: minero-aoki
5
+ database: test
6
+ encoding: utf8
data/test/helper.rb ADDED
@@ -0,0 +1,26 @@
1
+ require 'active_record'
2
+ require 'activerecord-import'
3
+ require 'activerecord-import/base'
4
+ ActiveRecord::Import.require_adapter 'mysql2'
5
+ require 'redshift-connector'
6
+ require 'redshift-connector-queuery'
7
+ require 'garage_client'
8
+ require 'queuery_client'
9
+ require 'yaml'
10
+ require 'logger'
11
+
12
+ YAML.load_file("#{__dir__}/database.yml").each do |name, ent|
13
+ ActiveRecord::Base.configurations[name] = ent
14
+ end
15
+
16
+ class BaseConn < ActiveRecord::Base
17
+ establish_connection :mysql
18
+ self.abstract_class = true
19
+ end
20
+ class ItemPv < BaseConn
21
+ connection
22
+ end
23
+
24
+ require_relative 'config'
25
+
26
+ RedshiftConnector.logger = Logger.new($stderr)
@@ -0,0 +1,22 @@
1
+ require_relative 'helper'
2
+ require 'test/unit'
3
+
4
+ class TestConnector < Test::Unit::TestCase
5
+ def test_transport
6
+ data_date = '2016-11-03'
7
+ job = RedshiftConnector.transport_delta(
8
+ schema: $TEST_SCHEMA,
9
+ table: 'item_pvs',
10
+
11
+ txn_id: data_date,
12
+ condition: %Q(data_date = date '#{data_date}'),
13
+
14
+ columns: %w[id data_date item_id pv uu],
15
+ upsert_columns: %w[pv uu],
16
+ filter: -> (id, data_date, item_id, pv, uu) {
17
+ [id.to_i, data_date, item_id.to_i, pv.to_i, uu.to_i]
18
+ }
19
+ )
20
+ job.execute
21
+ end
22
+ end
metadata ADDED
@@ -0,0 +1,136 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: redshift-connector-queuery
3
+ version: !ruby/object:Gem::Version
4
+ version: 8.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Minero Aoki
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-03-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: redshift-connector
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 7.0.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 7.0.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: redshift-connector-data_file
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 7.1.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 7.1.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: queuery_client
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 0.8.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 0.8.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: test-unit
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description:
98
+ email:
99
+ - aamine@loveruby.net
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - README.md
105
+ - lib/redshift-connector-queuery.rb
106
+ - lib/redshift_connector/queuery_data_source.rb
107
+ - lib/redshift_connector/queuery_exporter.rb
108
+ - test/config.rb
109
+ - test/database.yml
110
+ - test/helper.rb
111
+ - test/test_connector.rb
112
+ homepage: https://github.com/bricolages/redshift-connector-queuery
113
+ licenses:
114
+ - MIT
115
+ metadata: {}
116
+ post_install_message:
117
+ rdoc_options: []
118
+ require_paths:
119
+ - lib
120
+ required_ruby_version: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: 2.1.0
125
+ required_rubygems_version: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ requirements: []
131
+ rubyforge_project:
132
+ rubygems_version: 2.6.14
133
+ signing_key:
134
+ specification_version: 4
135
+ summary: Queuery adapter for redshift-connector
136
+ test_files: []