like_query 0.1.5 → 0.1.7

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: dcd1bdff2f0937db63147911ec7703739405d67bc30f35c19aa8261ee1ea5c38
4
- data.tar.gz: e3fd7d9a4a235ed6010f3a950827d69c87e1d351908b915ae29b453c3d91bf90
3
+ metadata.gz: 6cc43e697e0e135f6d9b0043ba7fd3d4b545ccd8b687cd8601c1383f3843cd7b
4
+ data.tar.gz: f23b48306aeb5ce6500f743f5cb08694489a598472502ad9294f3aea651c3259
5
5
  SHA512:
6
- metadata.gz: c73483e9cbd7cf1d93da216d7210780694fd27445241e860e93fbafe0973cefdc2c35eaa01319ab1a8f5c017cf1952e37764bf8606fd3b4e4633f21634118b7c
7
- data.tar.gz: ea335097891ce39c54d1177aad72d5b311b944c8923b37c3718c23e09948caeb98f980a47816be4e6b65258667e0b81bc6367c2a5e2781faf8f1e10f8fdfbb3b
6
+ metadata.gz: 328324be8d50940dd69e65bd2a590f8f307974163c0facf70b3ac451c3e676bc7e20bba89eeed5002cfbaf996e772d5edccca5bf00a7778dc5e72e8d9823155a
7
+ data.tar.gz: 78bba2733a9dc776dff1c8970019f9ffcf1d1821bae9b93006a3d12a255633fd433ccb49a47e90539e2aa5d3591eb4f9fd6e6e01cbcad90a0af0c148cfdc526e
@@ -1,16 +1,20 @@
1
1
  module LikeQuery
2
2
  module ModelExtensions
3
3
 
4
- def like(search_string, schema = nil)
4
+ def like(search_string, schema = nil, debug: false)
5
5
 
6
6
  search_string = '' if !search_string
7
7
  search_string = search_string.to_s unless search_string.is_a?(String)
8
+ schema = [schema] if schema.is_a?(Symbol)
9
+ @debug_like_query = debug
8
10
 
9
11
  raise 'like can only be called from a model' if self == ApplicationRecord
12
+ if schema.first.is_a?(Array) && schema.length >= 2
13
+ raise "only one array can be given: Either schema as one array or as multiple args, not as array"
14
+ end
10
15
 
11
16
  queries = nil
12
17
  associations = []
13
- schema = [schema] if schema.is_a?(Symbol)
14
18
  @like_query_schema = schema
15
19
 
16
20
  search_string.split(' ').each do |s|
@@ -18,13 +22,13 @@ module LikeQuery
18
22
  f_str = format_string_element(s)
19
23
 
20
24
  q = nil
21
- if schema.first.is_a?(Array) && schema.length >= 2
22
- raise "only one array can be given: Either schema as one array or as multiple args, not as array"
23
- end
25
+
24
26
  (schema.first.is_a?(Array) ? schema.first : schema).each do |p|
27
+ dbg("• Iterate schema => #{p}")
25
28
  enum_lab = enum_keys(p, s)
26
29
  if enum_lab.present?
27
30
  q = arel_table[p].in(enum_lab)
31
+ dbg(-> { " Query from enum => #{q.to_sql}" })
28
32
  elsif p.is_a?(Hash)
29
33
  p.each do |k, v|
30
34
  assoc = reflect_on_association(k)
@@ -58,13 +62,13 @@ module LikeQuery
58
62
  end
59
63
 
60
64
  if associations.present?
61
- left_outer_joins(associations).where(
62
- queries
63
- )
65
+ r = left_outer_joins(associations).where(queries)
66
+ dbg(->{"RESULT => #{r.to_sql}"})
67
+ r
64
68
  else
65
- where(
66
- queries
67
- )
69
+ r = where(queries)
70
+ dbg(->{"RESULT => #{r.to_sql}"})
71
+ r
68
72
  end
69
73
  end
70
74
 
@@ -134,11 +138,29 @@ module LikeQuery
134
138
 
135
139
  if search_string[:float_from] && [:float, :decimal, :big_decimal, :integer, :bigint].include?(type)
136
140
 
137
- arel.between(search_string[:float_from]..search_string[:float_until])
141
+ q = arel.between(search_string[:float_from]..search_string[:float_until])
142
+ dbg(-> { " Query from string-field => #{q.to_sql}" })
143
+ q
144
+
145
+ else
146
+
147
+ q = arel.matches(search_string[:string])
148
+ dbg(-> { " Query from string-field => #{q.to_sql}" })
149
+ q
150
+
151
+ end
152
+ end
153
+
154
+ def dbg(label)
155
+
156
+ return unless @debug_like_query
138
157
 
158
+ if label.is_a?(Proc)
159
+ lab = label.call
139
160
  else
140
- arel.matches(search_string[:string])
161
+ lab = label
141
162
  end
163
+ Rails.logger.debug("LikeQuery: #{lab}")
142
164
  end
143
165
  end
144
166
  end
@@ -1,3 +1,3 @@
1
1
  module LikeQuery
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.7"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: like_query
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - christian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-11-21 00:00:00.000000000 Z
11
+ date: 2024-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails