custom_query_methods 0.1.7 → 0.1.8

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: fbc05abda57ad4ba15bc8993b744a14f147eb98fa4890f18992fc880d3e9cec8
4
- data.tar.gz: 7708dd9e22545ae130bb789825d552901c181d91393116e63e5b28b5c23e3fb9
3
+ metadata.gz: '0923b7835bffac6b76fba0a176bb27abd37dbb64746adecd0f06931ec9d45f51'
4
+ data.tar.gz: 16683928fd340002ce0589ffd0e3c3b71d04ea799e865a81555c7b6e3322c60f
5
5
  SHA512:
6
- metadata.gz: 575d9f93d9dcac045e28c58e8d2efb96fe4b520120f0b20fcd0035db7d990af928c6f6ba8011195a63b7ecebe21438fa4c7d99b106f5d11e3b72a8cc91947b57
7
- data.tar.gz: d434c8784051c2044cd0cb0afed4046dba56b90beb9f505b7beeef484238d98809c16bb49cf850d6dd3f82ab317b21eee7a9e686ee30d3aefd6c1079b53fe34e
6
+ metadata.gz: 1b5ebcb4d32dc2f4569a899773e450e32550684c4cb4aadd0f282ec0dfc441bcefedc012f9b8b32c86ebee72fd09924bf284a24f944a4d81224149cc9e799ca9
7
+ data.tar.gz: 844aa02bc177e83c190dfda54c13118e1e343adfe9205751e394cdf16cc7a98c4852a145934cdd615219eff2d8d3eca0d79bb8a53a3a4c0433ab07bb01399233
Binary file
@@ -1,3 +1,3 @@
1
1
  module CustomQueryMethods
2
- VERSION = "0.1.7"
2
+ VERSION = "0.1.8"
3
3
  end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CustomQueryMethods
4
+ class WhereClauseFactory # :nodoc:
5
+ def initialize(klass, predicate_builder)
6
+ @klass = klass
7
+ @predicate_builder = predicate_builder
8
+ end
9
+
10
+ def build(opts, other)
11
+ case opts
12
+ when String, Array
13
+ parts = [klass.sanitize_sql(other.empty? ? opts : ([opts] + other))]
14
+ when Hash
15
+ attributes = predicate_builder.resolve_column_aliases(opts)
16
+ attributes.stringify_keys!
17
+
18
+ parts = predicate_builder.build_from_hash(attributes)
19
+ when Arel::Nodes::Node
20
+ parts = [opts]
21
+ else
22
+ raise ArgumentError, "Unsupported argument type: #{opts} (#{opts.class})"
23
+ end
24
+
25
+ WhereClause.new(parts)
26
+ end
27
+
28
+ protected
29
+
30
+ attr_reader :klass, :predicate_builder
31
+ end
32
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: custom_query_methods
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - tsotne
@@ -60,11 +60,13 @@ files:
60
60
  - custom_query_methods-0.1.4.gem
61
61
  - custom_query_methods-0.1.5.gem
62
62
  - custom_query_methods-0.1.6.gem
63
+ - custom_query_methods-0.1.7.gem
63
64
  - custom_query_methods.gemspec
64
65
  - lib/custom_query_methods.rb
65
66
  - lib/custom_query_methods/active_record.rb
66
67
  - lib/custom_query_methods/railtie.rb
67
68
  - lib/custom_query_methods/version.rb
69
+ - lib/custom_query_methods/where_clause_factory.rb
68
70
  homepage: http://example.com
69
71
  licenses:
70
72
  - MIT