like_query 0.1.5 → 0.1.6

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: c7de4a5d2ad260480095855c658997269624ccb606be9e38bd054342404bd7ad
4
+ data.tar.gz: 11f20847057ba089d2cf7020799f420bcf1f99ef2bc7aa09ed5a9a266a614725
5
5
  SHA512:
6
- metadata.gz: c73483e9cbd7cf1d93da216d7210780694fd27445241e860e93fbafe0973cefdc2c35eaa01319ab1a8f5c017cf1952e37764bf8606fd3b4e4633f21634118b7c
7
- data.tar.gz: ea335097891ce39c54d1177aad72d5b311b944c8923b37c3718c23e09948caeb98f980a47816be4e6b65258667e0b81bc6367c2a5e2781faf8f1e10f8fdfbb3b
6
+ metadata.gz: e2540e87f1eabbab29fd0f032e99e98029dfdfe6c558b7793fc3d63d8635171f76b110cd56ee0c34beca883908c1a32063c610f8af52f4f52223050e830006af
7
+ data.tar.gz: 458da755375fc2651a95a13f1c4722da0f85711f9742ba701fd0aa79b528f377852b01c222c1423287d7c731ed36dacc0eef61512b03271d89ae07599141aa3e
@@ -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)
@@ -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.6"
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.6
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