activerecord-hierarchical_query 0.2.0 → 1.0.0

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 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