rad_core_rails 0.8.7 → 0.9.2

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: c7ca060d1ce95b64a271d3f79ea39addadbdbdef68b5bf26cf072dfb0fb7629d
4
- data.tar.gz: 372188898723e4937380ada34fed23b6b77c082ec15850adb95ee3d58ec5cc01
3
+ metadata.gz: e868d3c6a889cb756093bfb614670f8e11db9d993f0fa58f404e21c214d82c40
4
+ data.tar.gz: 8a0841bde276161304032020371df1d93aaa877c89b5b07b239810ad98905775
5
5
  SHA512:
6
- metadata.gz: 8544212d17b05eb6519cd04855bf90b2355a7368fd5a43c65b2a9d690a307bcbe3bf5cb8f066f48536a61dda107283cc4d0d0a2f0d157d1d0a8003f0f5d60ad3
7
- data.tar.gz: 48cf45ef1b71c6cc0e0509715568d997f5442661f32c152f2830ad6ba375976d965714668c1d1d9d10ddc4632968eadcb35b3e00fb954280860200e9b04ab7cb
6
+ metadata.gz: 241e68dd2e610b2f61c2fd8e1f88ecc035f6f7fe9e1b35e1e32439de00ca71dacf5490131d977b9c8529121904558bb2e4310e5ec50c03c0f27512e1207237cc
7
+ data.tar.gz: b99dca53fa9a2aa1b7a14db7fad805c6f5cf04e3f90d8fb80c6197fafcd80262bcd9ea571b11a064a48cbe1a65c362d5e0f42455861e728f3a883b6c3889c872
@@ -206,14 +206,14 @@ module RadCoreRails
206
206
  else
207
207
  # probably should fix this.
208
208
  # somtimes we arent sending a filter option, so just default it to =
209
- str = "(#{column_name} #{filter[:option] || '='} ANY(ARRAY[?]))"
210
- args = [filter[:values]]
209
+ str = "(LOWER(TRIM(#{column_name})) #{filter[:option] || '='} ANY(ARRAY[?]))"
210
+ args = [filter[:values].map(&:strip).map(&:downcase)]
211
211
  end
212
212
 
213
213
  [str, args]
214
214
  end
215
215
 
216
- def sanitize_vector_string(search)
216
+ def sanitize_vector_string(search, weight = ':*')
217
217
  phrases_or = search.scan(/\+"([^"]*)"/) # e.g. +"Phrase for OR"
218
218
  # remove 'or' phrases from search if any
219
219
  phrases_or.each { |phrase| search.gsub!('+"' + phrase.first.to_s + '"', '') } if phrases_or.any?
@@ -228,17 +228,17 @@ module RadCoreRails
228
228
 
229
229
  sanitized_and_terms = search.split(' ')
230
230
  .reject { |term| term.include?('+') || term.include?('-') }
231
- .map { |term| term.downcase.strip + ':*' }
231
+ .map { |term| term.downcase.strip + weight }
232
232
  .reject { |t| t.blank? }
233
233
 
234
234
  sanitized_or_terms = search.split(' ')
235
235
  .select { |term| term.include?('+') }
236
- .map { |term| term[1, term.length].downcase + ':*' }
236
+ .map { |term| term[1, term.length].downcase + weight }
237
237
  .reject { |t| t.blank? }
238
238
 
239
239
  sanitized_excluded_terms = search.split(' ')
240
240
  .select { |term| term.include?('-') }
241
- .map { |term| term[1, term.length].downcase.strip + ':*' }
241
+ .map { |term| term[1, term.length].downcase.strip + weight }
242
242
  .reject { |t| t.blank? }
243
243
 
244
244
  and_clause = sanitized_and_terms.join(' & ')
@@ -275,13 +275,14 @@ module RadCoreRails
275
275
  end
276
276
  end
277
277
 
278
- def generate_vector_clause(column_name, filter)
278
+ def generate_vector_clause(column_name, actual_column, filter, weight = ':*')
279
+ return ["(#{actual_column} IS NULL OR #{actual_column} = '')", []] if filter[:option] == '!!'
279
280
  return ['', []] if filter[:values][0].blank?
280
281
 
281
- vector_string = sanitize_vector_string(filter[:values][0])
282
+ vector_string = sanitize_vector_string(filter[:values][0], weight)
282
283
 
283
- query = "(#{column_name} @@ to_tsquery('simple', ?))"
284
- [query, [vector_string]]
284
+ query = "(#{column_name} @@ to_tsquery('simple', ?) OR #{column_name} @@ to_tsquery('english', ?))"
285
+ [query, [vector_string, vector_string]]
285
286
  end
286
287
 
287
288
  def generate_zip_codes_clause(column_name, filter)
@@ -356,19 +357,13 @@ module RadCoreRails
356
357
  args = []
357
358
 
358
359
  case option
359
- when '='
360
- str = "#{column_name}::date = ?::date"
361
- args << values[0]
362
- when '>'
363
- str = "#{column_name}::date > ?::date"
364
- args << values[0]
365
- when '<'
366
- str = "#{column_name}::date < ?::date"
367
- args << values[0]
368
360
  when '..'
369
361
  str = "(#{column_name}::date BETWEEN ?::date AND ?::date)"
370
362
  args << values[0]
371
363
  args << values[1]
364
+ else
365
+ str = "#{column_name}::date #{option} ?::date"
366
+ args << values[0]
372
367
  end
373
368
  [str, args]
374
369
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RadCoreRails
4
- VERSION = '0.8.7'
4
+ VERSION = '0.9.2'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rad_core_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.7
4
+ version: 0.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oleksandr Poltavets, James Marrs
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-04-09 00:00:00.000000000 Z
11
+ date: 2022-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport