query_helper 0.3.8 → 0.4.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.lock +2 -2
- data/lib/query_helper/sql_filter.rb +1 -1
- data/lib/query_helper/sql_parser.rb +4 -2
- data/lib/query_helper/sql_sort.rb +1 -3
- data/lib/query_helper/version.rb +1 -1
- data/lib/query_helper.rb +6 -3
- metadata +3 -4
- data/lib/query_helper/invalid_sort_param_error.rb +0 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4ad56f0d478e804e375bb1e51305dad25b306d34a0db834b5ff3f67bfc4aeab1
|
4
|
+
data.tar.gz: 401fd61c7e653858ce46527efa430d3ce39ad2ec81b96b245d5870bbc32eac3f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f8bad72d56d042dde48a2316682adb871aeba56f19e1518c4488ad0bc12b205e8157542ee1d25fe76bd9c6df27a3f2a1a1e44449f248b2d4891f6d0017899d90
|
7
|
+
data.tar.gz: de8c9f4e1f22bc806c9857dfba844350c3ec65ff62bc7be19ad21aa1f53d2204285b1fe571289e54866850f88b68dc1615e8b2708bd8e113a14985162f948921
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
query_helper (0.
|
4
|
+
query_helper (0.4.0)
|
5
5
|
activerecord (> 5)
|
6
6
|
activesupport (> 5)
|
7
7
|
sqlite3
|
@@ -89,7 +89,7 @@ GEM
|
|
89
89
|
rspec-mocks (~> 3.10)
|
90
90
|
rspec-support (~> 3.10)
|
91
91
|
rspec-support (3.10.2)
|
92
|
-
sqlite3 (
|
92
|
+
sqlite3 (1.6.4)
|
93
93
|
mini_portile2 (~> 2.8.0)
|
94
94
|
thor (1.1.0)
|
95
95
|
tzinfo (2.0.4)
|
@@ -17,7 +17,7 @@ class QueryHelper
|
|
17
17
|
|
18
18
|
@filter_values.each do |comparate_alias, criteria|
|
19
19
|
# Find the sql mapping if it exists
|
20
|
-
map = @column_maps.find { |m| m.alias_name
|
20
|
+
map = @column_maps.find { |m| m.alias_name == comparate_alias }
|
21
21
|
raise InvalidQueryError.new("cannot filter by #{comparate_alias}") unless map
|
22
22
|
|
23
23
|
# create the filter
|
@@ -18,7 +18,9 @@ class QueryHelper
|
|
18
18
|
|
19
19
|
def remove_comments
|
20
20
|
# Remove SQL inline comments (/* */) and line comments (--)
|
21
|
-
@sql = @sql.gsub(
|
21
|
+
@sql = @sql.gsub(%r{/\*[^/]*?\*/}m, '') # Removes multi-line comments (/* ... */)
|
22
|
+
.gsub(/--[^\n]*/, '') # Removes single-line comments (--)
|
23
|
+
|
22
24
|
@sql.squish!
|
23
25
|
end
|
24
26
|
|
@@ -186,7 +188,7 @@ class QueryHelper
|
|
186
188
|
ColumnMap.new(
|
187
189
|
alias_name: sql_alias,
|
188
190
|
sql_expression: sql_expression.squish,
|
189
|
-
aggregate:
|
191
|
+
aggregate: /\b(array_agg|avg|bit_and|bit_or|bool_and|bool_or|boolor_agg|booland_agg|count|every|json_agg|jsonb_agg|json_object_agg|jsonb_object_agg|max|min|string_agg|sum|xmlagg)\((.*)\)/.match?(sql_expression)
|
190
192
|
) if sql_alias
|
191
193
|
end
|
192
194
|
column_maps.compact
|
@@ -34,9 +34,7 @@ class QueryHelper
|
|
34
34
|
direction = sort.split(":")[1]
|
35
35
|
modifier = sort.split(":")[2]
|
36
36
|
begin
|
37
|
-
|
38
|
-
raise InvalidSortParamError.new("Invalid sort param", sort_alias) if sort_col.nil?
|
39
|
-
sql_expression = sort_col.sql_expression
|
37
|
+
sql_expression = @column_maps.find{ |m| m.alias_name.casecmp?(sort_alias) }.sql_expression
|
40
38
|
rescue NoMethodError => e
|
41
39
|
raise InvalidQueryError.new("Sorting not allowed on column '#{sort_alias}'")
|
42
40
|
end
|
data/lib/query_helper/version.rb
CHANGED
data/lib/query_helper.rb
CHANGED
@@ -10,7 +10,6 @@ require "query_helper/sql_manipulator"
|
|
10
10
|
require "query_helper/sql_filter"
|
11
11
|
require "query_helper/sql_sort"
|
12
12
|
require "query_helper/invalid_query_error"
|
13
|
-
require "query_helper/invalid_sort_param_error"
|
14
13
|
|
15
14
|
class QueryHelper
|
16
15
|
|
@@ -281,8 +280,12 @@ class QueryHelper
|
|
281
280
|
raise ArgumentError.new("search_fields not defined") unless @search_fields.length > 0
|
282
281
|
placement = :where
|
283
282
|
maps = column_maps.select do |cm|
|
284
|
-
|
285
|
-
|
283
|
+
if @search_fields.include? cm.alias_name
|
284
|
+
placement = :having if cm.aggregate
|
285
|
+
true
|
286
|
+
else
|
287
|
+
false
|
288
|
+
end
|
286
289
|
end
|
287
290
|
bind_variable = ('a'..'z').to_a.shuffle[0,20].join.to_sym
|
288
291
|
@bind_variables[bind_variable] = "%#{@search_string}%"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: query_helper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Patterninc
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-11-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -190,7 +190,6 @@ files:
|
|
190
190
|
- lib/query_helper/column_map.rb
|
191
191
|
- lib/query_helper/filter.rb
|
192
192
|
- lib/query_helper/invalid_query_error.rb
|
193
|
-
- lib/query_helper/invalid_sort_param_error.rb
|
194
193
|
- lib/query_helper/query_helper_concern.rb
|
195
194
|
- lib/query_helper/sql_filter.rb
|
196
195
|
- lib/query_helper/sql_manipulator.rb
|
@@ -217,7 +216,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
217
216
|
- !ruby/object:Gem::Version
|
218
217
|
version: '0'
|
219
218
|
requirements: []
|
220
|
-
rubygems_version: 3.5.
|
219
|
+
rubygems_version: 3.5.22
|
221
220
|
signing_key:
|
222
221
|
specification_version: 4
|
223
222
|
summary: Ruby Gem to help with pagination and data formatting at Pattern, Inc.
|
@@ -1,18 +0,0 @@
|
|
1
|
-
class QueryHelper
|
2
|
-
class InvalidSortParamError < StandardError
|
3
|
-
|
4
|
-
attr_reader :sort_string
|
5
|
-
|
6
|
-
def initialize(msg='Invalid sort param', sort_string='')
|
7
|
-
@sort_string = sort_string
|
8
|
-
super(msg)
|
9
|
-
end
|
10
|
-
|
11
|
-
def as_json
|
12
|
-
{
|
13
|
-
'error' => message,
|
14
|
-
'sort_param' => sort_string
|
15
|
-
}
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|