activerecord-filter 8.0.0 → 8.1.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
2
  SHA256:
3
- metadata.gz: '09732db42dbc93213eb9cb72360f1fe556cb8ee1be65ef4ab9a5ea66460e463e'
4
- data.tar.gz: a363687983fb83cdb7db3a65c02e279ec56b57566c2199a844dc6bc973c50382
3
+ metadata.gz: 4cee15d7015346ac808e7892435628ff50b19aa86ff9a1ce671a1125d21e1ba4
4
+ data.tar.gz: a27330b0c68a8913f5aee1c95cacad8d9475492c5fd889ebff3b78ddb7b0a6c4
5
5
  SHA512:
6
- metadata.gz: b98da863c302b2aba54a339f3a78de317a9dbf11235f318f6ffb750bdb80265e5fde571d1a7d7eef72066bb37ad7e9a70bcbf7095b598b9d6b66911e9fd1db03
7
- data.tar.gz: d2969b02282399759622892ad30ef2fc181358bd2c9c2c2051f772c7d08395f951f446588a0cd7a060573580b582970ac614252d9be68a1c937c781cfada928f
6
+ metadata.gz: 5fcc52cd1ef6c55ec62ee8c2472a4cf8d39abf0e974b468020cbfacd07dc0b4af1b132da7a83994b6d014ff751eaf12b16725f790e3072df384d8f2fd4a3d898
7
+ data.tar.gz: 304f6d204c1d2c9359066d94e2dff95af5350fde8d1598cd61e64c8c9019dc39ac4a502d7483dff23c1cb0a35e1803597f9543434910f925310a6e9f7647eda5
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveRecord::Filter::AliasTrackerExtension
2
4
 
3
5
  def initialize(*, **)
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class ActiveRecord::Filter::FilterClauseFactory
2
4
 
3
5
  def initialize(model, predicate_builder)
4
- @model = model
6
+ @klass = model
5
7
  @predicate_builder = predicate_builder
6
8
  end
7
9
 
@@ -17,6 +19,6 @@ class ActiveRecord::Filter::FilterClauseFactory
17
19
 
18
20
  protected
19
21
 
20
- attr_reader :model, :predicate_builder
22
+ attr_reader :klass, :predicate_builder
21
23
 
22
24
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "active_support/concern"
2
4
 
3
5
  module ActiveRecord::Filter::PredicateBuilderExtension
@@ -297,18 +299,18 @@ module ActiveRecord::Filter::PredicateBuilderExtension
297
299
  value = value.dup
298
300
  klass = value.delete(:as).safe_constantize
299
301
 
300
- builder = self.class.new(ActiveRecord::TableMetadata.new(
302
+ builder = new_predicate_builder_extension(
301
303
  klass,
302
304
  alias_tracker.aliased_table_for_relation(relation_trail + ["#{klass.table_name}_as_#{relation.name}"], klass.arel_table) { klass.arel_table.name },
303
305
  relation
304
- ))
306
+ )
305
307
  builder.build_from_filter_hash(value, relation_trail + ["#{klass.table_name}_as_#{relation.name}"], alias_tracker)
306
308
  else
307
- builder = self.class.new(ActiveRecord::TableMetadata.new(
309
+ builder = new_predicate_builder_extension(
308
310
  relation.klass,
309
311
  alias_tracker.aliased_table_for_relation(relation_trail + [relation.name], relation.klass.arel_table) { relation.alias_candidate(table.arel_table.name || relation.klass.arel_table) },
310
312
  relation
311
- ))
313
+ )
312
314
  builder.build_from_filter_hash(value, relation_trail + [relation.name], alias_tracker)
313
315
  end
314
316
 
@@ -316,12 +318,21 @@ module ActiveRecord::Filter::PredicateBuilderExtension
316
318
 
317
319
  def expand_filter_for_join_table(relation, value, relation_trail, alias_tracker)
318
320
  relation = relation.active_record._reflections[relation.active_record._reflections[relation.name].send(:delegate_reflection).options[:through]]
319
- builder = self.class.new(ActiveRecord::TableMetadata.new(
321
+ builder = new_predicate_builder_extension(
320
322
  relation.klass,
321
323
  alias_tracker.aliased_table_for_relation(relation_trail + [relation.name], relation.klass.arel_table) { relation.alias_candidate(table.arel_table.name || relation.klass.arel_table) },
322
324
  relation
323
- ))
325
+ )
324
326
  builder.build_from_filter_hash(value, relation_trail + [relation.name], alias_tracker)
325
327
  end
326
328
 
329
+ if ActiveRecord.version >= "8.1"
330
+ def new_predicate_builder_extension(a,b,c)
331
+ self.class.new(ActiveRecord::TableMetadata.new(a, b))
332
+ end
333
+ else
334
+ def new_predicate_builder_extension(a,b,c)
335
+ self.class.new(ActiveRecord::TableMetadata.new(a, b, c))
336
+ end
337
+ end
327
338
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveRecord::Filter::QueryMethodsExtension
2
4
  private
3
5
  def build_join_buckets
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveRecord::Filter::RelationExtension
2
4
 
3
5
  def initialize(*, **)
@@ -49,7 +51,14 @@ module ActiveRecord::Filter::RelationExtension
49
51
  @filter_clause_factory ||= ActiveRecord::Filter::FilterClauseFactory.new(klass, predicate_builder)
50
52
  end
51
53
 
52
- if ActiveRecord.version >= "7.2"
54
+ if ActiveRecord.version >= "8.1"
55
+ def build_arel(aliases = nil)
56
+ arel = super
57
+ my_alias_tracker = ActiveRecord::Associations::AliasTracker.create(model.connection_pool, table.name, [])
58
+ build_filters(arel, my_alias_tracker)
59
+ arel
60
+ end
61
+ elsif ActiveRecord.version >= "7.2"
53
62
  def build_arel(connection, aliases = nil)
54
63
  arel = super
55
64
  my_alias_tracker = ActiveRecord::Associations::AliasTracker.create(model.connection_pool, table.name, [])
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveRecord::Filter::SpawnMethodsExtension
2
4
 
3
5
  def except(*skips)
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class ActiveRecord::UnkownFilterError < NoMethodError
2
4
  end
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveRecord
2
4
  module Filter
3
- VERSION = '8.0.0'
5
+ VERSION = '8.1.0'
4
6
  end
5
7
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_record'
2
4
  require 'arel/extensions'
3
5
  require 'active_record/filter/unkown_filter_error'
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-filter
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.0.0
4
+ version: 8.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Bracy
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2025-01-28 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: activerecord
@@ -16,28 +15,28 @@ dependencies:
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: 7.1.0
18
+ version: 7.2.0
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: 7.1.0
25
+ version: 7.2.0
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: arel-extensions
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
30
  - - ">="
32
31
  - !ruby/object:Gem::Version
33
- version: 7.1.0
32
+ version: 7.2.0
34
33
  type: :runtime
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
37
  - - ">="
39
38
  - !ruby/object:Gem::Version
40
- version: 7.1.0
39
+ version: 7.2.0
41
40
  - !ruby/object:Gem::Dependency
42
41
  name: pg
43
42
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +57,14 @@ dependencies:
58
57
  requirements:
59
58
  - - ">="
60
59
  - !ruby/object:Gem::Version
61
- version: 6.1.0
60
+ version: 7.2.0
62
61
  type: :development
63
62
  prerelease: false
64
63
  version_requirements: !ruby/object:Gem::Requirement
65
64
  requirements:
66
65
  - - ">="
67
66
  - !ruby/object:Gem::Version
68
- version: 6.1.0
67
+ version: 7.2.0
69
68
  - !ruby/object:Gem::Dependency
70
69
  name: bundler
71
70
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +121,20 @@ dependencies:
122
121
  - - ">="
123
122
  - !ruby/object:Gem::Version
124
123
  version: '0'
124
+ - !ruby/object:Gem::Dependency
125
+ name: benchmark
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ type: :development
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
125
138
  - !ruby/object:Gem::Dependency
126
139
  name: simplecov
127
140
  requirement: !ruby/object:Gem::Requirement
@@ -142,14 +155,14 @@ dependencies:
142
155
  requirements:
143
156
  - - ">="
144
157
  - !ruby/object:Gem::Version
145
- version: 6.1.0
158
+ version: 7.2.0
146
159
  type: :development
147
160
  prerelease: false
148
161
  version_requirements: !ruby/object:Gem::Requirement
149
162
  requirements:
150
163
  - - ">="
151
164
  - !ruby/object:Gem::Version
152
- version: 6.1.0
165
+ version: 7.2.0
153
166
  - !ruby/object:Gem::Dependency
154
167
  name: faker
155
168
  requirement: !ruby/object:Gem::Requirement
@@ -215,7 +228,6 @@ homepage: https://github.com/malomalo/activerecord-filter
215
228
  licenses:
216
229
  - MIT
217
230
  metadata: {}
218
- post_install_message:
219
231
  rdoc_options:
220
232
  - "--main"
221
233
  - README.md
@@ -232,8 +244,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
232
244
  - !ruby/object:Gem::Version
233
245
  version: '0'
234
246
  requirements: []
235
- rubygems_version: 3.5.21
236
- signing_key:
247
+ rubygems_version: 4.0.2
237
248
  specification_version: 4
238
249
  summary: A safe way to accept user parameters and query against your ActiveRecord
239
250
  Models