activerecord-filter 7.0.1 → 8.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
2
  SHA256:
3
- metadata.gz: 48643ae6cc991c1dff7397b4d72c5f2f0c125809f06c03deda47557f9f5102d8
4
- data.tar.gz: adcc3b342d478ad0802882041abf9ef583abd552d35d8ffccb574987f66d7a4b
3
+ metadata.gz: '09732db42dbc93213eb9cb72360f1fe556cb8ee1be65ef4ab9a5ea66460e463e'
4
+ data.tar.gz: a363687983fb83cdb7db3a65c02e279ec56b57566c2199a844dc6bc973c50382
5
5
  SHA512:
6
- metadata.gz: 464eae805db85247060f6553cf242a49f852ff5d04e4aed17d3613e6a155e4dbaa49c72dcca89c14449fa2aee70ee15ef39afefdce6ed29f18d4c6141e31c8f3
7
- data.tar.gz: 116e8b496f68e08f8b6c350432cd806de28b7a830898c84a02c0b4da4d6968d42c2da870e585eeeb247116592ee3db66189f078b88f5cacdd777633971e73b5b
6
+ metadata.gz: b98da863c302b2aba54a339f3a78de317a9dbf11235f318f6ffb750bdb80265e5fde571d1a7d7eef72066bb37ad7e9a70bcbf7095b598b9d6b66911e9fd1db03
7
+ data.tar.gz: d2969b02282399759622892ad30ef2fc181358bd2c9c2c2051f772c7d08395f951f446588a0cd7a060573580b582970ac614252d9be68a1c937c781cfada928f
@@ -1,7 +1,7 @@
1
1
  class ActiveRecord::Filter::FilterClauseFactory
2
2
 
3
- def initialize(klass, predicate_builder)
4
- @klass = klass
3
+ def initialize(model, predicate_builder)
4
+ @model = model
5
5
  @predicate_builder = predicate_builder
6
6
  end
7
7
 
@@ -17,6 +17,6 @@ class ActiveRecord::Filter::FilterClauseFactory
17
17
 
18
18
  protected
19
19
 
20
- attr_reader :klass, :predicate_builder
20
+ attr_reader :model, :predicate_builder
21
21
 
22
22
  end
@@ -33,7 +33,7 @@ module ActiveRecord::Filter::PredicateBuilderExtension
33
33
  relations << js
34
34
  end
35
35
  end
36
- elsif reflection = klass._reflections[key.to_s]
36
+ elsif reflection = klass._reflections[key.to_sym]
37
37
  if value.is_a?(Hash)
38
38
  relations << if reflection.polymorphic?
39
39
  value = value.dup
@@ -65,11 +65,11 @@ module ActiveRecord::Filter::PredicateBuilderExtension
65
65
  elsif value != true && value != false && value != 'true' && value != 'false' && !value.nil?
66
66
  relations << key
67
67
  end
68
- elsif !klass.columns_hash.has_key?(key.to_s) && key.to_s.end_with?('_ids') && reflection = klass._reflections[key.to_s.gsub(/_ids$/, 's')]
68
+ elsif !klass.columns_hash.has_key?(key.to_s) && key.to_s.end_with?('_ids') && reflection = klass._reflections[key.to_s.gsub(/_ids$/, 's').to_sym]
69
69
  relations << reflection.name
70
70
  elsif reflection = klass.reflect_on_all_associations(:has_and_belongs_to_many).find {|r| r.join_table == key.to_s && value.keys.first.to_s == r.association_foreign_key.to_s }
71
- reflection = klass._reflections[klass._reflections[reflection.name.to_s].send(:delegate_reflection).options[:through].to_s]
72
- relations << {reflection.name => build_filter_joins(reflection.klass, value)}
71
+ reflection = klass._reflections[klass._reflections[reflection.name].send(:delegate_reflection).options[:through]]
72
+ relations << { reflection.name => build_filter_joins(reflection.klass, value) }
73
73
  else
74
74
  {key => value}
75
75
  end
@@ -314,9 +314,8 @@ module ActiveRecord::Filter::PredicateBuilderExtension
314
314
 
315
315
  end
316
316
 
317
-
318
317
  def expand_filter_for_join_table(relation, value, relation_trail, alias_tracker)
319
- relation = relation.active_record._reflections[relation.active_record._reflections[relation.name.to_s].send(:delegate_reflection).options[:through].to_s]
318
+ relation = relation.active_record._reflections[relation.active_record._reflections[relation.name].send(:delegate_reflection).options[:through]]
320
319
  builder = self.class.new(ActiveRecord::TableMetadata.new(
321
320
  relation.klass,
322
321
  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) },
@@ -30,7 +30,7 @@ private
30
30
 
31
31
  joins = joins_values.dup
32
32
  if joins.last.is_a?(ActiveRecord::Associations::JoinDependency)
33
- stashed_eager_load = joins.pop if joins.last.base_klass == klass
33
+ stashed_eager_load = joins.pop if joins.last.base_klass == model
34
34
  end
35
35
 
36
36
  joins.each_with_index do |join, i|
@@ -49,7 +49,7 @@ private
49
49
  buckets[:named_join] = select_named_joins(joins, buckets[:stashed_join]) do |join|
50
50
  if join.is_a?(Arel::Nodes::Join)
51
51
  buckets[:join_node] << join
52
- elsif join.is_a?(CTEJoin)
52
+ elsif join.is_a?(ActiveRecord::QueryMethods::CTEJoin)
53
53
  buckets[:join_node] << build_with_join_node(join.name)
54
54
  else
55
55
  raise "unknown class: %s" % join.class.name
@@ -1,6 +1,6 @@
1
1
  module ActiveRecord::Filter::RelationExtension
2
2
 
3
- def initialize(klass, table: klass.arel_table, predicate_builder: klass.predicate_builder, values: {})
3
+ def initialize(*, **)
4
4
  @filters = []
5
5
  super
6
6
  end
@@ -49,13 +49,22 @@ module ActiveRecord::Filter::RelationExtension
49
49
  @filter_clause_factory ||= ActiveRecord::Filter::FilterClauseFactory.new(klass, predicate_builder)
50
50
  end
51
51
 
52
- def build_arel(aliases = nil)
53
- arel = super
54
- my_alias_tracker = ActiveRecord::Associations::AliasTracker.create(connection, table.name, [])
55
- build_filters(arel, my_alias_tracker)
56
- arel
52
+ if ActiveRecord.version >= "7.2"
53
+ def build_arel(connection, aliases = nil)
54
+ arel = super
55
+ my_alias_tracker = ActiveRecord::Associations::AliasTracker.create(model.connection_pool, table.name, [])
56
+ build_filters(arel, my_alias_tracker)
57
+ arel
58
+ end
59
+ else
60
+ def build_arel(aliases = nil)
61
+ arel = super
62
+ my_alias_tracker = ActiveRecord::Associations::AliasTracker.create(connection, table.name, [])
63
+ build_filters(arel, my_alias_tracker)
64
+ arel
65
+ end
57
66
  end
58
-
67
+
59
68
  def build_filters(manager, alias_tracker)
60
69
  @filters.each do |filters|
61
70
  manager.where(filter_clause_factory.build(filters, alias_tracker).ast)
@@ -1,5 +1,5 @@
1
1
  module ActiveRecord
2
2
  module Filter
3
- VERSION = '7.0.1'
3
+ VERSION = '8.0.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-filter
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.0.1
4
+ version: 8.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Bracy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-09-09 00:00:00.000000000 Z
11
+ date: 2025-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 7.0.0
19
+ version: 7.1.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 7.0.0
26
+ version: 7.1.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: arel-extensions
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 7.0.3
33
+ version: 7.1.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 7.0.3
40
+ version: 7.1.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: pg
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -232,7 +232,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
232
232
  - !ruby/object:Gem::Version
233
233
  version: '0'
234
234
  requirements: []
235
- rubygems_version: 3.5.11
235
+ rubygems_version: 3.5.21
236
236
  signing_key:
237
237
  specification_version: 4
238
238
  summary: A safe way to accept user parameters and query against your ActiveRecord