like_query 0.1.7 → 0.1.9

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: 6cc43e697e0e135f6d9b0043ba7fd3d4b545ccd8b687cd8601c1383f3843cd7b
4
- data.tar.gz: f23b48306aeb5ce6500f743f5cb08694489a598472502ad9294f3aea651c3259
3
+ metadata.gz: 218fe9ef241c396ed43d5a0daffe4fb69fceccf534b2b15b425eca0e56cd5f0d
4
+ data.tar.gz: a3a37469d41c7ec574868480691dd727c61a8908ad34816c23297775b830323c
5
5
  SHA512:
6
- metadata.gz: 328324be8d50940dd69e65bd2a590f8f307974163c0facf70b3ac451c3e676bc7e20bba89eeed5002cfbaf996e772d5edccca5bf00a7778dc5e72e8d9823155a
7
- data.tar.gz: 78bba2733a9dc776dff1c8970019f9ffcf1d1821bae9b93006a3d12a255633fd433ccb49a47e90539e2aa5d3591eb4f9fd6e6e01cbcad90a0af0c148cfdc526e
6
+ metadata.gz: 134b7f5d618b4828a973de21a34250bc16cae0cfe086819cd4927a99941e4ba6cde50b1c2883feb4a63cc413333234076b15f7dfa3e8cbc81878692e04028481
7
+ data.tar.gz: 19ed347cd40c60819bf56d7ffdf28e6c64b183367bb5e9f11282cf8fec89450a95df0e88b623f477c2eeacb4f2c66f5877dd224e91c0235eaf9806205b088a7c
@@ -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,14 +21,17 @@ 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
  if enum_lab.present?
30
- q = arel_table[p].in(enum_lab)
31
- 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)
34
+
32
35
  elsif p.is_a?(Hash)
33
36
  p.each do |k, v|
34
37
  assoc = reflect_on_association(k)
@@ -37,36 +40,38 @@ module LikeQuery
37
40
  if v.is_a?(Symbol) || v.is_a?(String)
38
41
  _q = create_arel(v, f_str, assoc)
39
42
  if _q.present?
40
- q = (q ? q.or(_q) : _q)
43
+ q.push(_q.to_sql)
41
44
  end
42
45
  elsif v.is_a?(Array)
43
46
  v.each do |_v|
44
47
  _q = create_arel(_v, f_str, assoc)
45
48
  if _q.present?
46
- q = (q ? q.or(_q) : _q)
49
+ q.push(_q.to_sql)
47
50
  end
48
51
  end
49
52
  else
50
53
  raise "unknown element: #{p}"
51
54
  end
52
55
  end
56
+
53
57
  else
54
58
  _q = create_arel(p, f_str)
55
59
  if _q.present?
56
- q = (q ? q.or(_q) : _q)
60
+ q.push(_q.to_sql)
57
61
  end
62
+
58
63
  end
59
64
 
60
65
  end
61
- queries = (queries ? queries.and(q) : q)
66
+ queries.push("(#{q.join(' OR ')})")
62
67
  end
63
68
 
64
69
  if associations.present?
65
- r = left_outer_joins(associations).where(queries)
70
+ r = left_outer_joins(associations).where(queries.join(" AND "))
66
71
  dbg(->{"RESULT => #{r.to_sql}"})
67
72
  r
68
73
  else
69
- r = where(queries)
74
+ r = where(queries.join(" AND "))
70
75
  dbg(->{"RESULT => #{r.to_sql}"})
71
76
  r
72
77
  end
@@ -139,7 +144,7 @@ module LikeQuery
139
144
  if search_string[:float_from] && [:float, :decimal, :big_decimal, :integer, :bigint].include?(type)
140
145
 
141
146
  q = arel.between(search_string[:float_from]..search_string[:float_until])
142
- dbg(-> { " Query from string-field => #{q.to_sql}" })
147
+ dbg(-> { " Query from number-field => #{q.to_sql}" })
143
148
  q
144
149
 
145
150
  else
@@ -1,3 +1,3 @@
1
1
  module LikeQuery
2
- VERSION = "0.1.7"
2
+ VERSION = "0.1.9"
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.7
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - christian