rad_core_rails 0.8.4 → 0.9.0

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: 82f95dfd6c84c8aa3594f89b742563c9d2d07c0637ae18432acabd352c6ff088
4
- data.tar.gz: bf435325dc6b733c186167a643c07330d10da47fa165328b14465109986af93e
3
+ metadata.gz: dae4ae340b06a1da96202cc5dce7e727a3907edc48841586a125db38e427e8c8
4
+ data.tar.gz: 622d9c87e97ff694d590b3dd9002afbe2e83ac0931e86e71a3165be2b7a8348b
5
5
  SHA512:
6
- metadata.gz: 5e47b6b0a09ff8f6b77c8b97b59664e8b03180e1f1ed461b6a37eef2a0bd59431195055c33e565c2244c0ffa56708dfd186b35dcc2c9f3ccfbb5acfa66a39f1c
7
- data.tar.gz: 2205ff6ff6494d0f770b69f896b26e5075c23da826ca964f2edafd2dba7f3cee7f0add929538ec755fc65f44e10142847ba269223c1acae2f9f4c7637fcaec83
6
+ metadata.gz: 1975e49d1eb90781389bff974d63b0ae0ca948a88ea427258e34dd401b34bf922999f10fb3f0ac5ba5bb96ec5b1bbe03cad4601dc0252b3ea129f16cc39c451b
7
+ data.tar.gz: 8a69180847d8c03ecd95fe3c941d4d04d29bc5416638cf9752cdd7154c84e9e9325f1aa1e0fe46f4d3863028b13133ccdbd470cdc8fdb94fe493b8705e5978f7
data/Gemfile CHANGED
@@ -5,9 +5,18 @@ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
5
5
  # Specify your gem's dependencies in new_gem.gemspec
6
6
  gemspec
7
7
 
8
+ gem "activesupport", '>= 4.2'
9
+ gem "activemodel", '>= 4.2'
10
+ gem "activerecord", '>= 4.2'
11
+ gem "actionpack", '>= 4.2'
12
+ gem "bundler", '>= 1.17.3'
13
+ gem "rake"
14
+
8
15
  group :test do
9
16
  gem 'byebug'
10
17
  gem 'pg'
11
18
  gem 'database_cleaner-active_record'
12
- gem "factory_bot_rails"
19
+ gem 'factory_bot_rails'
20
+ gem 'rspec-rails'
21
+ gem 'shoulda-matchers', '>= 4.0'
13
22
  end
@@ -178,12 +178,13 @@ module RadCoreRails
178
178
  [str, args]
179
179
  end
180
180
 
181
- def generate_model_clause(column_name, filter, optional_exclusion_clause = nil)
181
+ def generate_model_clause(column_name, filter, optional_exclusion_clause = nil, optional_blank_clause = nil)
182
182
  if optional_exclusion_clause.present? && filter[:option] == '!='
183
183
  str = optional_exclusion_clause
184
184
  args = [filter[:values]]
185
185
  elsif filter[:option] == '!!'
186
- str = "(#{column_name} IS NULL)"
186
+ optional_blank_clause ||= "(#{column_name} IS NULL)"
187
+ str = optional_blank_clause
187
188
  args = []
188
189
  else
189
190
  # probably should fix this.
@@ -195,7 +196,24 @@ module RadCoreRails
195
196
  [str, args]
196
197
  end
197
198
 
198
- def sanitize_vector_string(search)
199
+ def generate_string_clause(column_name, filter, optional_exclusion_clause = nil)
200
+ if optional_exclusion_clause.present? && filter[:option] == '!='
201
+ str = optional_exclusion_clause
202
+ args = [filter[:values]]
203
+ elsif filter[:option] == '!!'
204
+ str = "(#{column_name} IS NULL OR #{column_name} = '')"
205
+ args = []
206
+ else
207
+ # probably should fix this.
208
+ # somtimes we arent sending a filter option, so just default it to =
209
+ str = "(LOWER(TRIM(#{column_name})) #{filter[:option] || '='} ANY(ARRAY[?]))"
210
+ args = [filter[:values].map(&:strip).map(&:downcase)]
211
+ end
212
+
213
+ [str, args]
214
+ end
215
+
216
+ def sanitize_vector_string(search, weight = ':*')
199
217
  phrases_or = search.scan(/\+"([^"]*)"/) # e.g. +"Phrase for OR"
200
218
  # remove 'or' phrases from search if any
201
219
  phrases_or.each { |phrase| search.gsub!('+"' + phrase.first.to_s + '"', '') } if phrases_or.any?
@@ -210,17 +228,17 @@ module RadCoreRails
210
228
 
211
229
  sanitized_and_terms = search.split(' ')
212
230
  .reject { |term| term.include?('+') || term.include?('-') }
213
- .map { |term| term.downcase.strip + ':*' }
231
+ .map { |term| term.downcase.strip + weight }
214
232
  .reject { |t| t.blank? }
215
233
 
216
234
  sanitized_or_terms = search.split(' ')
217
235
  .select { |term| term.include?('+') }
218
- .map { |term| term[1, term.length].downcase + ':*' }
236
+ .map { |term| term[1, term.length].downcase + weight }
219
237
  .reject { |t| t.blank? }
220
238
 
221
239
  sanitized_excluded_terms = search.split(' ')
222
240
  .select { |term| term.include?('-') }
223
- .map { |term| term[1, term.length].downcase.strip + ':*' }
241
+ .map { |term| term[1, term.length].downcase.strip + weight }
224
242
  .reject { |t| t.blank? }
225
243
 
226
244
  and_clause = sanitized_and_terms.join(' & ')
@@ -257,18 +275,24 @@ module RadCoreRails
257
275
  end
258
276
  end
259
277
 
260
- 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] == '!!'
261
280
  return ['', []] if filter[:values][0].blank?
262
281
 
263
- vector_string = sanitize_vector_string(filter[:values][0])
282
+ vector_string = sanitize_vector_string(filter[:values][0], weight)
264
283
 
265
284
  query = "(#{column_name} @@ to_tsquery('simple', ?))"
266
285
  [query, [vector_string]]
267
286
  end
268
287
 
269
288
  def generate_zip_codes_clause(column_name, filter)
270
- str = "(#{column_name} = ANY(#{zip_code_class.distance_query}))"
271
- args = zip_code_class.distance_args(filter)
289
+ if filter[:option] != '!!'
290
+ str = "(#{column_name} = ANY(#{zip_code_class.distance_query}))"
291
+ args = zip_code_class.distance_args(filter)
292
+ elsif filter[:option] == '!!'
293
+ str = "(#{column_name} IS NULL OR #{column_name} = '')"
294
+ args = []
295
+ end
272
296
 
273
297
  [str, args]
274
298
  end
@@ -277,6 +301,9 @@ module RadCoreRails
277
301
  if filter[:option] == '!='
278
302
  str = "(SELECT NOT(#{column_name}::text[] && ARRAY[?]::text[]))"
279
303
  args = [filter[:values]]
304
+ elsif filter[:option] == '!!'
305
+ str = "(#{column_name}::text[] = '{}')"
306
+ args = []
280
307
  else
281
308
  str = "(SELECT (#{column_name}::text[] && ARRAY[?]::text[]))"
282
309
  args = [filter[:values]]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RadCoreRails
4
- VERSION = '0.8.4'
4
+ VERSION = '0.9.0'
5
5
  end
@@ -27,18 +27,7 @@ Gem::Specification.new do |spec|
27
27
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
28
  spec.require_paths = ["lib"]
29
29
 
30
- # spec.add_dependency "rails", '>= 4.2'
31
- spec.add_dependency "activesupport", '>= 4.2'
32
- spec.add_dependency "activemodel", '>= 4.2'
33
- spec.add_dependency "activerecord", '>= 4.2'
34
-
35
- spec.add_development_dependency "actionpack", '>= 4.2'
36
- spec.add_development_dependency "bundler", '>= 1.17.3'
37
- spec.add_development_dependency "rake"
38
- spec.add_development_dependency "rspec-rails"
39
- spec.add_development_dependency "factory_bot_rails"
40
- spec.add_development_dependency "shoulda-matchers", '>= 4.0'
41
- spec.add_development_dependency 'pg', '>= 0.19'
42
- spec.add_development_dependency 'railties', '>= 5'
43
- # spec.add_development_dependency "simplecov", '~> 0.17', '>= 0.18.5'
30
+ spec.add_dependency "activesupport"
31
+ spec.add_dependency "activemodel"
32
+ spec.add_dependency "activerecord"
44
33
  end
metadata CHANGED
@@ -1,93 +1,23 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rad_core_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.4
4
+ version: 0.9.0
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-03-24 00:00:00.000000000 Z
11
+ date: 2021-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '4.2'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '4.2'
27
- - !ruby/object:Gem::Dependency
28
- name: activemodel
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '4.2'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '4.2'
41
- - !ruby/object:Gem::Dependency
42
- name: activerecord
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '4.2'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '4.2'
55
- - !ruby/object:Gem::Dependency
56
- name: actionpack
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '4.2'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '4.2'
69
- - !ruby/object:Gem::Dependency
70
- name: bundler
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: 1.17.3
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: 1.17.3
83
- - !ruby/object:Gem::Dependency
84
- name: rake
85
15
  requirement: !ruby/object:Gem::Requirement
86
16
  requirements:
87
17
  - - ">="
88
18
  - !ruby/object:Gem::Version
89
19
  version: '0'
90
- type: :development
20
+ type: :runtime
91
21
  prerelease: false
92
22
  version_requirements: !ruby/object:Gem::Requirement
93
23
  requirements:
@@ -95,13 +25,13 @@ dependencies:
95
25
  - !ruby/object:Gem::Version
96
26
  version: '0'
97
27
  - !ruby/object:Gem::Dependency
98
- name: rspec-rails
28
+ name: activemodel
99
29
  requirement: !ruby/object:Gem::Requirement
100
30
  requirements:
101
31
  - - ">="
102
32
  - !ruby/object:Gem::Version
103
33
  version: '0'
104
- type: :development
34
+ type: :runtime
105
35
  prerelease: false
106
36
  version_requirements: !ruby/object:Gem::Requirement
107
37
  requirements:
@@ -109,61 +39,19 @@ dependencies:
109
39
  - !ruby/object:Gem::Version
110
40
  version: '0'
111
41
  - !ruby/object:Gem::Dependency
112
- name: factory_bot_rails
42
+ name: activerecord
113
43
  requirement: !ruby/object:Gem::Requirement
114
44
  requirements:
115
45
  - - ">="
116
46
  - !ruby/object:Gem::Version
117
47
  version: '0'
118
- type: :development
48
+ type: :runtime
119
49
  prerelease: false
120
50
  version_requirements: !ruby/object:Gem::Requirement
121
51
  requirements:
122
52
  - - ">="
123
53
  - !ruby/object:Gem::Version
124
54
  version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: shoulda-matchers
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '4.0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '4.0'
139
- - !ruby/object:Gem::Dependency
140
- name: pg
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: '0.19'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: '0.19'
153
- - !ruby/object:Gem::Dependency
154
- name: railties
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - ">="
158
- - !ruby/object:Gem::Version
159
- version: '5'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - ">="
165
- - !ruby/object:Gem::Version
166
- version: '5'
167
55
  description: RadCoreRails lib
168
56
  email:
169
57
  - sancho.ck@gmail.com