query_helper 0.3.6 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a27ca095e7c4d3068540e36e523109f0e1e03bc2c3da465aba7ede82e54d9a98
4
- data.tar.gz: b7e0406b8c275e5996234c8e5a528c615c75483532b5f5a91b7926e88a0ed885
3
+ metadata.gz: 4ad56f0d478e804e375bb1e51305dad25b306d34a0db834b5ff3f67bfc4aeab1
4
+ data.tar.gz: 401fd61c7e653858ce46527efa430d3ce39ad2ec81b96b245d5870bbc32eac3f
5
5
  SHA512:
6
- metadata.gz: 2f50dbcf3dc0e2de1afa33b2b59318ade4154eae8b4e2f9400ff8bcc4fd144515e4c021a6f65235b5d384b40cc5a743f0e9db122b5d5f50376f376d4ea784fe0
7
- data.tar.gz: 107dc690d8dc7e9672a7516fe1da95ebf9a2b65263e6dfae962d6587b7372935a349e53d18f101d049f44e7fd01fa0cb887c1bd2798013dbdcf4ee27b0ac03f0
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.3.6)
4
+ query_helper (0.4.0)
5
5
  activerecord (> 5)
6
6
  activesupport (> 5)
7
7
  sqlite3
@@ -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(/\/\*(.*?)\*\//, '').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: /(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: /\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
@@ -1,3 +1,3 @@
1
1
  class QueryHelper
2
- VERSION = "0.3.6"
2
+ VERSION = "0.4.0"
3
3
  end
data/lib/query_helper.rb CHANGED
@@ -280,8 +280,12 @@ class QueryHelper
280
280
  raise ArgumentError.new("search_fields not defined") unless @search_fields.length > 0
281
281
  placement = :where
282
282
  maps = column_maps.select do |cm|
283
- placement = :having if cm.aggregate
284
- @search_fields.include? cm.alias_name
283
+ if @search_fields.include? cm.alias_name
284
+ placement = :having if cm.aggregate
285
+ true
286
+ else
287
+ false
288
+ end
285
289
  end
286
290
  bind_variable = ('a'..'z').to_a.shuffle[0,20].join.to_sym
287
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.3.6
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: 2023-09-04 00:00:00.000000000 Z
11
+ date: 2024-11-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -216,7 +216,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
216
216
  - !ruby/object:Gem::Version
217
217
  version: '0'
218
218
  requirements: []
219
- rubygems_version: 3.4.10
219
+ rubygems_version: 3.5.22
220
220
  signing_key:
221
221
  specification_version: 4
222
222
  summary: Ruby Gem to help with pagination and data formatting at Pattern, Inc.