active_house 0.6.6 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: aef56e2b59c4b55300d5f8757223ca0828211077
4
- data.tar.gz: 7cd17faa5e1c2cda1b13c99a586db4a6702e2713
2
+ SHA256:
3
+ metadata.gz: bb0197094ad900501646a07772ec0116aad46f694ac0aebf3917ec54d97646f5
4
+ data.tar.gz: a7039266527540b20084854ddb0fbc939fad47486dc2d9239aff2e2899e87c1f
5
5
  SHA512:
6
- metadata.gz: a8c2732364f3273985ce411a1c217b7e0f49465adf1ae965a38e0dc44de190a48479e4163ac68bdc72b7f350b6da9142160807a043bd40676bd7e278e6318bb2
7
- data.tar.gz: 050af80a79b2d04da52a9fae8a38a65d1888f70eab423c64e1c79f1bbe8bd705212921d32778b8499b27e1e1173feb37d9835393dd877c1a49d330bfa56b27b9
6
+ metadata.gz: 4eb7b21237f15550fdff809ec3aa188d9c3e0f0ef46b105ba949172f77c094974785c44f81f225dbd5d8b70cd05faad3c5ef985ac2ce9d155bbe45fa6328c91d
7
+ data.tar.gz: e1a4bc99777aca92c9d28998e4d2098e3c754a7c7c7a61ae06f4f0430ec2a07d4e00ce01b9d3136601d5ba8f1974ee5a27512102e18ee45dded44ae364d24faa
@@ -0,0 +1,27 @@
1
+ name: Tests
2
+ on:
3
+ pull_request:
4
+ push:
5
+ branches:
6
+ - master
7
+
8
+ jobs:
9
+ test:
10
+ runs-on: ubuntu-latest
11
+ strategy:
12
+ matrix:
13
+ ruby: [ '2.5', '2.6', '2.7' ]
14
+ rails: [ '~> 5.0', '~> 6.0' ]
15
+ name: Tests with Ruby ${{ matrix.ruby }} Activemodel/Activesupport ${{ matrix.rails }}
16
+ env:
17
+ RAILS_VERSION: ${{ matrix.rails }}
18
+ steps:
19
+ - uses: actions/checkout@v2
20
+ - uses: actions/setup-ruby@v1
21
+ with:
22
+ ruby-version: ${{ matrix.ruby }}
23
+ - name: Run tests
24
+ run: |
25
+ gem install bundler
26
+ bundle install
27
+ bundle exec rake
data/Gemfile CHANGED
@@ -5,6 +5,12 @@ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
5
5
  # Specify your gem's dependencies in active_house.gemspec
6
6
  gemspec
7
7
 
8
+ gem 'activemodel', ENV['RAILS_VERSION'], require: false
9
+ gem 'activesupport', ENV['RAILS_VERSION'], require: false
10
+
8
11
  group :test do
12
+ gem 'minitest', '~> 5.0', require: false
13
+ gem 'rake', '~> 10.0', require: false
9
14
  gem 'rubocop', '0.58.1', require: false
15
+ gem 'webmock', require: false
10
16
  end
data/active_house.gemspec CHANGED
@@ -27,8 +27,4 @@ Gem::Specification.new do |spec|
27
27
  spec.add_dependency 'clickhouse', '~> 0.1.10'
28
28
  spec.add_dependency 'kaminari-core', '~> 1.1'
29
29
  spec.add_dependency 'plain_model', '~> 0.2'
30
-
31
- spec.add_development_dependency 'bundler', '~> 1.16'
32
- spec.add_development_dependency 'minitest', '~> 5.0'
33
- spec.add_development_dependency 'rake', '~> 10.0'
34
30
  end
data/bin/setup CHANGED
File without changes
@@ -21,7 +21,7 @@ module ActiveHouse
21
21
 
22
22
  def select_all(sql, *bindings)
23
23
  prepared_sql = prepared_statement(sql, *bindings)
24
- connection.query(prepared_sql)
24
+ connection.post_query(prepared_sql)
25
25
  end
26
26
 
27
27
  def select_values(sql, *bindings)
@@ -1,4 +1,5 @@
1
1
  require 'active_model/conversion'
2
+ require 'active_support/core_ext/module/delegation'
2
3
  require 'active_model/naming'
3
4
  require 'plain_model/modeling/base'
4
5
  require 'plain_model/modeling/queryable'
@@ -97,6 +97,14 @@ module ActiveHouse
97
97
  super
98
98
  end
99
99
  end
100
+
101
+ def ==(other)
102
+ other.class == self.class && other._attributes == _attributes
103
+ end
104
+
105
+ protected
106
+
107
+ attr_reader :_attributes
100
108
  end
101
109
  end
102
110
  end
@@ -1,3 +1,3 @@
1
1
  module ActiveHouse
2
- VERSION = '0.6.6'.freeze
2
+ VERSION = '0.7.0'.freeze
3
3
  end
data/lib/active_house.rb CHANGED
@@ -3,6 +3,9 @@ require 'active_house/configuration'
3
3
  require 'active_house/model'
4
4
  require 'active_house/query_builder'
5
5
 
6
+ require 'clickhouse/connection/post_query'
7
+ Clickhouse::Connection.include Clickhouse::Connection::PostQuery
8
+
6
9
  module ActiveHouse
7
10
  def self.configure
8
11
  yield configuration
@@ -0,0 +1,47 @@
1
+ module Clickhouse
2
+ class Connection
3
+ # By default Clickhouse uses GET request for query, but it has limitation for length on server side.
4
+ # So we will allow to use POST request with query in a body.
5
+ module PostQuery
6
+
7
+ def post_query(query)
8
+ query = Utils.extract_format(query)[0]
9
+ query += ' FORMAT JSONCompact'
10
+ parse_data post(nil, query)
11
+ end
12
+
13
+ def select_rows(options)
14
+ post_query to_select_query(options)
15
+ end
16
+
17
+ def request(method, query, body = nil)
18
+ raise ArgumentError, 'when query is omitted body must be passed' if query.nil? && body.nil?
19
+
20
+ connect!
21
+ body = body.strip unless body.nil?
22
+ query = query.strip unless query.nil?
23
+
24
+ start = Time.now
25
+
26
+ headers = { 'Content-Type' => 'text/plain' }
27
+ response = client.send(method, path(query), body, headers)
28
+ status = response.status
29
+ duration = Time.now - start
30
+ if query.nil?
31
+ query, format = Utils.extract_format(body)
32
+ else
33
+ query, format = Utils.extract_format(query)
34
+ end
35
+ response = parse_body(format, response.body)
36
+ stats = parse_stats(response)
37
+
38
+ write_log duration, query, stats
39
+ raise QueryError, "Got status #{status} (expected 200): #{response}" unless status == 200
40
+ response
41
+ rescue Faraday::Error => e
42
+ raise ConnectionError, e.message
43
+ end
44
+
45
+ end
46
+ end
47
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_house
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.6
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Denis Talakevich
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-08-08 00:00:00.000000000 Z
11
+ date: 2021-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -80,48 +80,6 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0.2'
83
- - !ruby/object:Gem::Dependency
84
- name: bundler
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '1.16'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '1.16'
97
- - !ruby/object:Gem::Dependency
98
- name: minitest
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '5.0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '5.0'
111
- - !ruby/object:Gem::Dependency
112
- name: rake
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '10.0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '10.0'
125
83
  description: ORM and Query DSL for ClickHouse
126
84
  email:
127
85
  - senid231@gmail.com
@@ -129,6 +87,7 @@ executables: []
129
87
  extensions: []
130
88
  extra_rdoc_files: []
131
89
  files:
90
+ - ".github/workflows/tests.yml"
132
91
  - ".gitignore"
133
92
  - ".rubocop.yml"
134
93
  - ".travis.yml"
@@ -166,6 +125,7 @@ files:
166
125
  - lib/active_house/querying/union.rb
167
126
  - lib/active_house/querying/where.rb
168
127
  - lib/active_house/version.rb
128
+ - lib/clickhouse/connection/post_query.rb
169
129
  homepage: https://github.com/senid231/active_house
170
130
  licenses:
171
131
  - MIT
@@ -185,8 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
185
145
  - !ruby/object:Gem::Version
186
146
  version: '0'
187
147
  requirements: []
188
- rubyforge_project:
189
- rubygems_version: 2.4.8
148
+ rubygems_version: 3.0.8
190
149
  signing_key:
191
150
  specification_version: 4
192
151
  summary: ORM and Query DSL for ClickHouse