like_query 0.1.8 → 0.2.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: 4dd78d6cee1f2c1de9f98dca1ba3fecc9a6d4fca67b705a98c0a7d76e0bf05a4
4
- data.tar.gz: f785e5341d8c8e397a858af100c67e27c0e25551c181cf13e5b8d146da42f47c
3
+ metadata.gz: 2244376c37da7206ec259ae99b3ce2e42588141cc6b45251cff9baec1d118882
4
+ data.tar.gz: 6d8c20860daa488b5c70a87c6b751cadf7bd668062df0039cf859ba93d720c0d
5
5
  SHA512:
6
- metadata.gz: 04732f1e9d3177ea44ae7cff882007ea53ce893c349cd22d4ce7ad2301759eed886697ea20cc5b23c8a127ac081c089cab27acc97c5214330b9f18444cd81b70
7
- data.tar.gz: 3e60c6de1f037a4c371227f6cf622e8e15029dfe1780ae5ecd58554d8bfed31ac9404fd6edcfdc578f7daf20849a48ccd92be2bac4202e78093dfd37a0620c53
6
+ metadata.gz: 2bf07d4bbe541b83cb78aad5ca59107d19d8269ab89bfed4b495bdfa13ef020ad3d016740a8a07f5e6dfcfad066cc60811b8806754718ad867110894354da4ce
7
+ data.tar.gz: a235b679dcb95c7a90302e67aeb9c16b599e42696387573e09a3a73ad1168d0ad29c349223e943e3a32ae2f95fc63449de9afa0cf96d100f1ebb82f31e10c551
@@ -13,7 +13,7 @@ module LikeQuery
13
13
  raise "only one array can be given: Either schema as one array or as multiple args, not as array"
14
14
  end
15
15
 
16
- queries = nil
16
+ queries = []
17
17
  associations = []
18
18
  @like_query_schema = schema
19
19
 
@@ -21,15 +21,16 @@ module LikeQuery
21
21
 
22
22
  f_str = format_string_element(s)
23
23
 
24
- q = nil
24
+ q = []
25
25
 
26
26
  (schema.first.is_a?(Array) ? schema.first : schema).each do |p|
27
27
  dbg("• Iterate schema => #{p}")
28
28
  enum_lab = enum_keys(p, s)
29
29
 
30
30
  if enum_lab.present?
31
- q = arel_table[p].in(enum_lab)
32
- dbg(-> { " Query from enum => #{q.to_sql}" })
31
+ _q = arel_table[p].in(enum_lab).to_sql
32
+ dbg(-> { " Query from enum => #{_q}" })
33
+ q.push(_q)
33
34
 
34
35
  elsif p.is_a?(Hash)
35
36
  p.each do |k, v|
@@ -37,16 +38,10 @@ module LikeQuery
37
38
  raise "Unknown association: :#{k}" unless assoc.present?
38
39
  associations.push(k.to_sym) unless associations.include?(k.to_sym)
39
40
  if v.is_a?(Symbol) || v.is_a?(String)
40
- _q = create_arel(v, f_str, assoc)
41
- if _q.present?
42
- q = (q ? q.or(_q) : _q)
43
- end
41
+ q.push(query_string(v, f_str, assoc))
44
42
  elsif v.is_a?(Array)
45
43
  v.each do |_v|
46
- _q = create_arel(_v, f_str, assoc)
47
- if _q.present?
48
- q = (q ? q.or(_q) : _q)
49
- end
44
+ q.push(query_string(_v, f_str, assoc))
50
45
  end
51
46
  else
52
47
  raise "unknown element: #{p}"
@@ -54,23 +49,20 @@ module LikeQuery
54
49
  end
55
50
 
56
51
  else
57
- _q = create_arel(p, f_str)
58
- if _q.present?
59
- q = (q ? q.or(_q) : _q)
60
- end
52
+ q.push(query_string(p, f_str))
61
53
 
62
54
  end
63
55
 
64
56
  end
65
- queries = (queries ? queries.and(q) : q)
57
+ queries.push("(#{q.join(' OR ')})")
66
58
  end
67
59
 
68
60
  if associations.present?
69
- r = left_outer_joins(associations).where(queries)
61
+ r = left_outer_joins(associations).where(queries.join(" AND "))
70
62
  dbg(->{"RESULT => #{r.to_sql}"})
71
63
  r
72
64
  else
73
- r = where(queries)
65
+ r = where(queries.join(" AND "))
74
66
  dbg(->{"RESULT => #{r.to_sql}"})
75
67
  r
76
68
  end
@@ -130,7 +122,7 @@ module LikeQuery
130
122
  res
131
123
  end
132
124
 
133
- def create_arel(schema_column, search_string, association = nil)
125
+ def query_string(schema_column, search_string, association = nil)
134
126
 
135
127
  base_object = association&.klass || self
136
128
  begin
@@ -142,14 +134,14 @@ module LikeQuery
142
134
 
143
135
  if search_string[:float_from] && [:float, :decimal, :big_decimal, :integer, :bigint].include?(type)
144
136
 
145
- q = arel.between(search_string[:float_from]..search_string[:float_until])
146
- dbg(-> { " Query from number-field => #{q.to_sql}" })
137
+ q = arel.between(search_string[:float_from]..search_string[:float_until]).to_sql
138
+ dbg(" Query from number-field => #{q}")
147
139
  q
148
140
 
149
141
  else
150
142
 
151
- q = arel.matches(search_string[:string])
152
- dbg(-> { " Query from string-field => #{q.to_sql}" })
143
+ q = arel.matches(search_string[:string]).to_sql
144
+ dbg(" Query from string-field => #{q}")
153
145
  q
154
146
 
155
147
  end
@@ -1,3 +1,3 @@
1
1
  module LikeQuery
2
- VERSION = "0.1.8"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: like_query
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - christian