like_query 0.1.8 → 0.2.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: 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