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 +4 -4
- data/Gemfile +10 -1
- data/lib/rad_core_rails/query_generator.rb +37 -10
- data/lib/rad_core_rails/version.rb +1 -1
- data/rad_core_rails.gemspec +3 -14
- metadata +7 -119
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dae4ae340b06a1da96202cc5dce7e727a3907edc48841586a125db38e427e8c8
|
4
|
+
data.tar.gz: 622d9c87e97ff694d590b3dd9002afbe2e83ac0931e86e71a3165be2b7a8348b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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
|
-
|
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
|
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
|
-
|
271
|
-
|
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]]
|
data/rad_core_rails.gemspec
CHANGED
@@ -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
|
-
|
31
|
-
spec.add_dependency "
|
32
|
-
spec.add_dependency "
|
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.
|
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-
|
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: :
|
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:
|
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: :
|
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:
|
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: :
|
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
|