query_helper 0.2.18 → 0.2.19

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: 66a48754e9a1e5fcf794039299fc18c477bdda5cc334e09988e24a73cd5dc0b7
4
- data.tar.gz: 2f1aa69978a6b1ccffca16f82b7617e32bbb5e819460782ae566de439a694043
3
+ metadata.gz: c3bc15fea354655ec8dc8ab74e84849104d7f13e8f0dfc064d7210d75642ae60
4
+ data.tar.gz: cdb0d638c3afc722e19816d136a1a27f5716e1d06bc838eeea481d6995438f7c
5
5
  SHA512:
6
- metadata.gz: 0b09be775d91bb839e8c15da2d166bc33ac6bbb1ed46b00f2bd6a52962d06999383797776411c26e86a28e082221fdb37f28562aa0d8d28f91087bf3971ab6f7
7
- data.tar.gz: 77ec774a1a2a49b4ac90deb066321488ee7a4a2884bc149107b664a54eb31a955d109eeef9ce6c8a22b61afd66ffc06889382d50db8081e69b1b1432c6aa28b9
6
+ metadata.gz: 4ce4101f690100aabd91841e8866daa1bffc728d5b741739707dc28bdb220dc2851974fb468d11ad5c681d5aa3315c49e93e3de7b197046e4badfd8bdb339866
7
+ data.tar.gz: 65aaa2d1e2d37ae994968728df34027cd846ff4e38c6c25771c64c90bffde48d799fb70ddffdadbee7b6a7584055e2ba8a43a32155a2aff1e2e0c6311c98261d
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- query_helper (0.2.18)
4
+ query_helper (0.2.19)
5
5
  activerecord (> 5)
6
6
  activesupport (> 5)
7
7
 
@@ -80,13 +80,13 @@ class QueryHelper
80
80
  @as_json_options = as_json_options if as_json_options
81
81
  @custom_mappings = custom_mappings if custom_mappings
82
82
  @preload = preload if preload
83
- @search_fields = search_fields if search_fields
84
- @sql_filter = sql_filter if sql_filter
85
- @sql_sort = sql_sort if sql_sort
86
- @search_string = search_string if search_string
83
+ @search_fields = search_fields if search_fields
84
+ @sql_filter = sql_filter if sql_filter
85
+ @sql_sort = sql_sort if sql_sort
86
+ @search_string = search_string if search_string
87
87
  @page = determine_page(page: page, per_page: per_page) if page
88
88
  @per_page = determine_per_page(page: page, per_page: per_page) if per_page
89
- @metadata = metadata if metadata
89
+ @metadata = metadata if metadata
90
90
  set_limit_and_offset()
91
91
  return self
92
92
  end
@@ -116,21 +116,21 @@ class QueryHelper
116
116
  @sql_filter.create_filters()
117
117
 
118
118
  having_clauses = @sql_filter.having_clauses
119
- where_clauses = @sql_filter.where_clauses
120
-
119
+ where_clauses = @sql_filter.where_clauses
120
+
121
121
  if @search_string
122
122
  search_filter = search_filter(column_maps)
123
123
  if search_filter[:placement] == :where
124
124
  where_clauses << search_filter[:filter]
125
- else
125
+ else
126
126
  having_clauses << search_filter[:filter]
127
127
  end
128
- end
128
+ end
129
129
 
130
130
 
131
131
  # merge the filter bind variables into the query bind variables
132
132
  @bind_variables.merge!(@sql_filter.bind_variables)
133
-
133
+
134
134
  # Execute Sql Query
135
135
  manipulator = SqlManipulator.new(
136
136
  sql: @query,
@@ -152,7 +152,7 @@ class QueryHelper
152
152
  return query if @bind_variables.length == 0
153
153
  begin
154
154
  return @model.sanitize_sql_array([query, @bind_variables])
155
- rescue NoMethodError
155
+ rescue NoMethodError
156
156
  # sanitize_sql_array is a protected method before Rails v5.2.3
157
157
  return @model.send(:sanitize_sql_array, [query, @bind_variables])
158
158
  end
@@ -181,8 +181,8 @@ class QueryHelper
181
181
 
182
182
  def pagination_results(count=@count)
183
183
  # Set pagination params if they aren't provided
184
- results_per_page = @per_page || count
185
- results_page = @page || 1
184
+ results_per_page = @per_page || count
185
+ results_page = @page || 1
186
186
 
187
187
  total_pages = (count.to_i/(results_per_page.nonzero? || 1).to_f).ceil
188
188
  next_page = results_page + 1 if results_page.between?(1, total_pages - 1)
@@ -205,16 +205,16 @@ class QueryHelper
205
205
  private
206
206
 
207
207
  def determine_page(page:, per_page:)
208
- return page.to_i if page
209
- return 1 if !page && per_page
208
+ return page.to_i if page
209
+ return 1 if !page && per_page
210
210
  return nil
211
- end
211
+ end
212
212
 
213
213
  def determine_per_page(page:, per_page:)
214
- return per_page.to_i if per_page
215
- return 100 if !per_page && page
214
+ return per_page.to_i if per_page
215
+ return 100 if !per_page && page
216
216
  return nil
217
- end
217
+ end
218
218
 
219
219
  def set_limit_and_offset
220
220
  if @page && @per_page
@@ -226,7 +226,7 @@ class QueryHelper
226
226
  @bind_variables[:limit] = limit
227
227
  @bind_variables[:offset] = offset
228
228
  end
229
- end
229
+ end
230
230
 
231
231
  def paginated_results
232
232
  { pagination: pagination_results(),
@@ -273,16 +273,16 @@ class QueryHelper
273
273
  def search_filter(column_maps)
274
274
  raise ArgumentError.new("search_fields not defined") unless @search_fields.length > 0
275
275
  placement = :where
276
- maps = column_maps.select do |cm|
276
+ maps = column_maps.select do |cm|
277
277
  placement = :having if cm.aggregate
278
278
  @search_fields.include? cm.alias_name
279
- end
279
+ end
280
280
  bind_variable = ('a'..'z').to_a.shuffle[0,20].join.to_sym
281
281
  @bind_variables[bind_variable] = "%#{@search_string}%"
282
- filter = "#{maps.map{|m| "#{m.sql_expression}::varchar"}.join(" || ")} ilike :#{bind_variable}"
282
+ filter = "#{maps.map{|m| "coalesce(#{m.sql_expression}::varchar, '')"}.join(" || ")} ilike :#{bind_variable}"
283
283
  return {
284
284
  filter: filter,
285
285
  placement: placement
286
286
  }
287
- end
287
+ end
288
288
  end
@@ -13,7 +13,7 @@ class QueryHelper
13
13
 
14
14
  model.attribute_names.each do |attribute|
15
15
  if maps.select{|x| x.alias_name == attribute}.empty?
16
- maps << ColumnMap.new(alias_name: attribute, sql_expression: "#{model.to_s.underscore.pluralize}.#{attribute}")
16
+ maps << ColumnMap.new(alias_name: attribute, sql_expression: "#{model.table_name.pluralize}.#{attribute}")
17
17
  end
18
18
  end
19
19
 
@@ -1,3 +1,3 @@
1
1
  class QueryHelper
2
- VERSION = "0.2.18"
2
+ VERSION = "0.2.19"
3
3
  end
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.2.18
4
+ version: 0.2.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evan McDaniel
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-11 00:00:00.000000000 Z
11
+ date: 2021-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -199,7 +199,7 @@ homepage: https://github.com/iserve-products/query_helper
199
199
  licenses:
200
200
  - MIT
201
201
  metadata: {}
202
- post_install_message:
202
+ post_install_message:
203
203
  rdoc_options: []
204
204
  require_paths:
205
205
  - lib
@@ -215,7 +215,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
215
215
  version: '0'
216
216
  requirements: []
217
217
  rubygems_version: 3.0.3
218
- signing_key:
218
+ signing_key:
219
219
  specification_version: 4
220
220
  summary: Ruby Gem to help with pagination and data formatting at Pattern, Inc.
221
221
  test_files: []