activerecord-hierarchical_query 0.2.0 → 1.0.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
- SHA256:
3
- metadata.gz: 6c42356f33dc54b6465666e31e25c1e4339e81d188dca9b128c9a6435239adf3
4
- data.tar.gz: d2f9c3703c91a157bee7ce70dc83f4c11d52a88f65e0b29a50ad570aa6e412bb
2
+ SHA1:
3
+ metadata.gz: 13f2aad576b516e9b2235f1e3776a6f5bd52b11b
4
+ data.tar.gz: e76658b0c6ffe75f4a4e0e0cc889290b1270957f
5
5
  SHA512:
6
- metadata.gz: fe4ae82ba1fb0b099bc945e33d320f3499ae3f158922cf49692fda4bde3d92f5a58d73304d4d7ba474ef98a55640e46004ee31a4e64421cbac3d8829fdc6bed7
7
- data.tar.gz: 186ffb55554c0d61d83f5dafdc2f7f76fb164f594337a7ff0c72baa4cce62a7d094426aa542146f8f2cba9da67bdcb2cad9e49dca0c906db93e0c90327513412
6
+ metadata.gz: 7fa854231ce99498de1046ab02c709523fe489a20b1ec8ba9c3bbda430a2bd894ac5dc5107b3333dc561328300ef111c668292b89b0ebd5c7659eed1dd78d55b
7
+ data.tar.gz: ea1b27e86b7eb26a7f025d59be55e4fe2e83046f50ceedb56940af267d3ccb28be8bfa7665240caf5904731906b5d0fc23de6b30f714edd01901f83edf701d57
data/README.md CHANGED
@@ -6,21 +6,6 @@
6
6
  [![Dependency Status](https://gemnasium.com/take-five/activerecord-hierarchical_query.png)](https://gemnasium.com/take-five/activerecord-hierarchical_query)
7
7
  [![Gem Version](https://badge.fury.io/rb/activerecord-hierarchical_query.png)](http://badge.fury.io/rb/activerecord-hierarchical_query)
8
8
 
9
- ## Rails 4 Only
10
-
11
- This is the README for the **Rails 4 version**. Support for Rails 4 is
12
- ending soon. Please upgrade to Rails 5 which is supported on the
13
- master branch.
14
-
15
- Be aware that this README and the gems dependencies for Rails 4
16
- may be out of date. If you must use Rails 4 please monitor this
17
- branch's requirements for security releases.
18
-
19
- If you are on a ruby version greater than 2.3 be sure that you
20
- are on Rails 4.2.
21
-
22
- ## Introduction
23
-
24
9
  Create hierarchical queries using simple DSL, recursively traverse trees using single SQL query.
25
10
 
26
11
  If a table contains hierarchical data, then you can select rows in hierarchical order using hierarchical query builder.
@@ -80,7 +65,7 @@ crumbs = records.pluck(:name).join(' / ')
80
65
 
81
66
  ## Requirements
82
67
 
83
- * ActiveRecord >= 4.0, < 5.0
68
+ * ActiveRecord >= 3.1.0 (Rails 5.0 not supported yet)
84
69
  * PostgreSQL >= 8.4
85
70
 
86
71
  ## Installation
@@ -15,7 +15,7 @@ module ActiveRecord
15
15
  end
16
16
 
17
17
  def bind_values
18
- scope.bind_values
18
+ scope.bound_attributes
19
19
  end
20
20
 
21
21
  def arel
@@ -40,7 +40,7 @@ module ActiveRecord
40
40
 
41
41
  private
42
42
  def build_manager
43
- @arel = Arel::SelectManager.new(table.engine).
43
+ @arel = Arel::SelectManager.new(table).
44
44
  with(:recursive, with_query).
45
45
  from(recursive_table)
46
46
  end
@@ -13,7 +13,7 @@ module ActiveRecord
13
13
  end
14
14
 
15
15
  def bind_values
16
- scope.bind_values
16
+ scope.bound_attributes
17
17
  end
18
18
 
19
19
  def arel
@@ -11,17 +11,21 @@ module ActiveRecord
11
11
  @query = query
12
12
  @builder = CTE::QueryBuilder.new(query, options: options)
13
13
  @relation = join_to
14
- @alias = Arel::Table.new(subquery_alias, ActiveRecord::Base)
14
+ @alias = Arel::Table.new(subquery_alias)
15
15
  @options = options
16
16
  end
17
17
 
18
18
  def build
19
- relation = @relation.joins(joined_arel_node)
20
- # copy bound variables from inner subquery
21
- relation.bind_values += bind_values
19
+ relation = @relation
20
+
22
21
  # add ordering by "__order_column"
23
22
  relation.order_values += order_columns if ordered?
24
23
 
24
+ relation = relation.joins(joined_arel_node)
25
+
26
+ # copy bound variables from inner subquery
27
+ relation.bind_values += bind_values
28
+
25
29
  relation
26
30
  end
27
31
 
@@ -100,15 +100,16 @@ module ActiveRecord
100
100
  def order_column
101
101
  table = order_attribute.relation
102
102
 
103
- if table.engine == ActiveRecord::Base
103
+ engine = table.class.engine
104
+ if engine == ActiveRecord::Base
104
105
  columns =
105
- if table.engine.connection.respond_to?(:schema_cache)
106
- table.engine.connection.schema_cache.columns_hash(table.name)
106
+ if engine.connection.respond_to?(:schema_cache)
107
+ engine.connection.schema_cache.columns_hash(table.name)
107
108
  else
108
- table.engine.connection_pool.columns_hash[table.name]
109
+ engine.connection_pool.columns_hash[table.name]
109
110
  end
110
111
  else
111
- columns = table.engine.columns_hash
112
+ columns = engine.columns_hash
112
113
  end
113
114
 
114
115
  columns[order_attribute.name.to_s]
@@ -24,7 +24,7 @@ module ActiveRecord
24
24
  :distinct_value
25
25
 
26
26
  # @api private
27
- CHILD_SCOPE_METHODS = :where, :joins, :group, :having, :bind
27
+ CHILD_SCOPE_METHODS = :where, :joins, :group, :having
28
28
 
29
29
  def initialize(klass)
30
30
  @klass = klass
@@ -178,7 +178,6 @@ module ActiveRecord
178
178
  # @!method joins(*tables)
179
179
  # @!method group(*values)
180
180
  # @!method having(*conditions)
181
- # @!method bind(value)
182
181
  CHILD_SCOPE_METHODS.each do |method|
183
182
  define_method(method) do |*args|
184
183
  @child_scope_value = @child_scope_value.public_send(method, *args)
@@ -1,5 +1,5 @@
1
1
  module ActiveRecord
2
2
  module HierarchicalQuery
3
- VERSION = '0.2.0'
3
+ VERSION = '1.0.0'
4
4
  end
5
5
  end
@@ -218,19 +218,6 @@ describe ActiveRecord::HierarchicalQuery do
218
218
  ).to match_array [child_4, child_5]
219
219
  end
220
220
  end
221
-
222
- describe 'binding values' do
223
- it 'binds values' do
224
- expect(
225
- klass.join_recursive do |query|
226
- query.start_with('id = $1')
227
- .connect_by(id: :parent_id)
228
- .where(nil)
229
- .bind([nil, child_4.id])
230
- end
231
- ).to match_array([child_4, child_5])
232
- end
233
- end
234
221
  end
235
222
 
236
223
  describe '#join_recursive options' do
metadata CHANGED
@@ -1,110 +1,108 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-hierarchical_query
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexei Mikhailov
8
- - Zach Aysan
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2018-09-22 00:00:00.000000000 Z
11
+ date: 2017-04-10 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activerecord
16
15
  requirement: !ruby/object:Gem::Requirement
17
16
  requirements:
18
- - - ">"
17
+ - - ">="
19
18
  - !ruby/object:Gem::Version
20
- version: '4.0'
19
+ version: 3.1.0
21
20
  - - "<"
22
21
  - !ruby/object:Gem::Version
23
- version: '5.0'
22
+ version: '5.1'
24
23
  type: :runtime
25
24
  prerelease: false
26
25
  version_requirements: !ruby/object:Gem::Requirement
27
26
  requirements:
28
- - - ">"
27
+ - - ">="
29
28
  - !ruby/object:Gem::Version
30
- version: '4.0'
29
+ version: 3.1.0
31
30
  - - "<"
32
31
  - !ruby/object:Gem::Version
33
- version: '5.0'
32
+ version: '5.1'
34
33
  - !ruby/object:Gem::Dependency
35
34
  name: bundler
36
35
  requirement: !ruby/object:Gem::Requirement
37
36
  requirements:
38
37
  - - "~>"
39
38
  - !ruby/object:Gem::Version
40
- version: '1.16'
39
+ version: '1.5'
41
40
  type: :development
42
41
  prerelease: false
43
42
  version_requirements: !ruby/object:Gem::Requirement
44
43
  requirements:
45
44
  - - "~>"
46
45
  - !ruby/object:Gem::Version
47
- version: '1.16'
46
+ version: '1.5'
48
47
  - !ruby/object:Gem::Dependency
49
48
  name: rake
50
49
  requirement: !ruby/object:Gem::Requirement
51
50
  requirements:
52
51
  - - "~>"
53
52
  - !ruby/object:Gem::Version
54
- version: '12.3'
53
+ version: 10.4.2
55
54
  type: :development
56
55
  prerelease: false
57
56
  version_requirements: !ruby/object:Gem::Requirement
58
57
  requirements:
59
58
  - - "~>"
60
59
  - !ruby/object:Gem::Version
61
- version: '12.3'
60
+ version: 10.4.2
62
61
  - !ruby/object:Gem::Dependency
63
62
  name: rspec
64
63
  requirement: !ruby/object:Gem::Requirement
65
64
  requirements:
66
65
  - - "~>"
67
66
  - !ruby/object:Gem::Version
68
- version: '3.8'
67
+ version: 3.1.0
69
68
  type: :development
70
69
  prerelease: false
71
70
  version_requirements: !ruby/object:Gem::Requirement
72
71
  requirements:
73
72
  - - "~>"
74
73
  - !ruby/object:Gem::Version
75
- version: '3.8'
74
+ version: 3.1.0
76
75
  - !ruby/object:Gem::Dependency
77
76
  name: database_cleaner
78
77
  requirement: !ruby/object:Gem::Requirement
79
78
  requirements:
80
79
  - - "~>"
81
80
  - !ruby/object:Gem::Version
82
- version: '1.7'
81
+ version: 1.3.0
83
82
  type: :development
84
83
  prerelease: false
85
84
  version_requirements: !ruby/object:Gem::Requirement
86
85
  requirements:
87
86
  - - "~>"
88
87
  - !ruby/object:Gem::Version
89
- version: '1.7'
88
+ version: 1.3.0
90
89
  - !ruby/object:Gem::Dependency
91
90
  name: simplecov
92
91
  requirement: !ruby/object:Gem::Requirement
93
92
  requirements:
94
93
  - - "~>"
95
94
  - !ruby/object:Gem::Version
96
- version: '0.16'
95
+ version: 0.9.1
97
96
  type: :development
98
97
  prerelease: false
99
98
  version_requirements: !ruby/object:Gem::Requirement
100
99
  requirements:
101
100
  - - "~>"
102
101
  - !ruby/object:Gem::Version
103
- version: '0.16'
102
+ version: 0.9.1
104
103
  description:
105
104
  email:
106
105
  - amikhailov83@gmail.com
107
- - zachaysan@gmail.com
108
106
  executables: []
109
107
  extensions: []
110
108
  extra_rdoc_files: []
@@ -150,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
148
  version: '0'
151
149
  requirements: []
152
150
  rubyforge_project:
153
- rubygems_version: 2.7.7
151
+ rubygems_version: 2.4.8
154
152
  signing_key:
155
153
  specification_version: 4
156
154
  summary: Recursively traverse trees using a single SQL query