Skip to content

Commit 866ce33

Browse files
committed
Merge pull request #60 from patterninc/pred-6551
PRED-6551 Process all the criteria(not just first one) and store in the filters
1 parent fa98422 commit 866ce33

File tree

4 files changed

+12
-14
lines changed

4 files changed

+12
-14
lines changed

lib/query_helper.rb

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -282,12 +282,8 @@ def search_filter(column_maps)
282282
raise ArgumentError.new("search_fields not defined") unless @search_fields.length > 0
283283
placement = :where
284284
maps = column_maps.select do |cm|
285-
if @search_fields.include? cm.alias_name
286285
placement = :having if cm.aggregate
287-
true
288-
else
289-
false
290-
end
286+
@search_fields.include? cm.alias_name
291287
end
292288
bind_variable = ('a'..'z').to_a.shuffle[0,20].join.to_sym
293289
@bind_variables[bind_variable] = "%#{@search_string}%"

lib/query_helper/sql_filter.rb

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,15 @@ def create_filters
2121
raise InvalidQueryError.new("cannot filter by #{comparate_alias}") unless map
2222

2323
# create the filter
24-
@filters << QueryHelper::Filter.new(
25-
operator_code: criteria.keys.first,
26-
criterion: criteria.values.first,
27-
comparate: map.sql_expression,
28-
aggregate: map.aggregate,
29-
qualify_clause: aggregated_attribute?(comparate: map.sql_expression)
30-
)
24+
criteria.each do |k, v|
25+
@filters << QueryHelper::Filter.new(
26+
operator_code: k,
27+
criterion: v,
28+
comparate: map.sql_expression,
29+
aggregate: map.aggregate,
30+
qualify_clause: aggregated_attribute?(comparate: map.sql_expression)
31+
)
32+
end
3133
end
3234
end
3335

lib/query_helper/sql_parser.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ def find_aliases
188188
ColumnMap.new(
189189
alias_name: sql_alias,
190190
sql_expression: sql_expression.squish,
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)
191+
aggregate: /(?i)\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|any_value)\((.*)\)/.match?(sql_expression)
192192
) if sql_alias
193193
end
194194
column_maps.compact

lib/query_helper/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
class QueryHelper
2-
VERSION = "0.4.2"
2+
VERSION = "0.4.3"
33
end

0 commit comments

Comments
 (0)