query_helper 0.2.9 → 0.2.14

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ad62903d54b1df9280b687c57da64e7a8a94e0919c156a1176f517248c69065e
4
- data.tar.gz: d6c25ed277261ea00685c57bee58432bbc208d76f6e4b42d9ce3401173e3f35a
3
+ metadata.gz: 1aceb412b2d8c65cbe7a8ca001c0d3609b926546a3928e996b9a8f68f3c59491
4
+ data.tar.gz: 28027fdaec7281917bf52578c2dcf36d390e4dbdecc71286f35453f30831fd2f
5
5
  SHA512:
6
- metadata.gz: abeb83f9d294ee0a0d0dcc7ed1c702b9f8d2858ce8da6c82b5cd8fc12c45634865cb68cdfc994851362fc4180d38d31b992bda0f35e0ec1b21c0462a29b61999
7
- data.tar.gz: cddfa33a462fb4391bb736a39405309fbb980ab14e72040e4924fa898c0d95aac69bf4635b6f312df694480827969a715d4f77452aa6303c9f90236f2e0688f7
6
+ metadata.gz: 8a402b1afb054e8470ee020d354e581564940b27091f5d24cb7a0cd277e7fd20c26cc2e6e15211967bf993ea96346223e60fba4a07f39eda34720d23351eb58a
7
+ data.tar.gz: cae4fbd2f45abbd36df6393883897cf77d7451c8a86211085f48185ba0ad3d6dab68f3d196a757b49261afa4976137f4291acd825d63bebc2a81d9eff2893030
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- query_helper (0.2.9)
4
+ query_helper (0.2.14)
5
5
  activerecord (> 5)
6
6
  activesupport (> 5)
7
7
 
@@ -13,7 +13,7 @@ require "query_helper/invalid_query_error"
13
13
 
14
14
  class QueryHelper
15
15
 
16
- attr_accessor :model, :bind_variables, :sql_filter, :sql_sort, :page, :per_page, :single_record, :associations, :as_json_options, :executed_query, :api_payload, :preload
16
+ attr_accessor :model, :bind_variables, :sql_filter, :sql_sort, :page, :per_page, :single_record, :associations, :as_json_options, :executed_query, :api_payload, :preload, :search_field, :search_string, :metadata
17
17
  attr_reader :query
18
18
 
19
19
  def initialize(
@@ -31,7 +31,8 @@ class QueryHelper
31
31
  api_payload: false, # Return the paginated payload or simply return the result array
32
32
  preload: [], # preload activerecord associations - used instead of `associations` when you don't want them included in the payload
33
33
  search_fields: [],
34
- search_string: nil
34
+ search_string: nil,
35
+ metadata: {}
35
36
  )
36
37
  @query = query.class < ActiveRecord::Relation ? query.to_sql : query
37
38
  @model = query.class < ActiveRecord::Relation ? query.base_class : model
@@ -49,6 +50,7 @@ class QueryHelper
49
50
  @preload = preload
50
51
  @search_fields = search_fields
51
52
  @search_string = search_string
53
+ @metadata = metadata
52
54
  end
53
55
 
54
56
  def update(
@@ -66,7 +68,8 @@ class QueryHelper
66
68
  sql_sort: nil,
67
69
  page: nil,
68
70
  per_page: nil,
69
- search_string: nil
71
+ search_string: nil,
72
+ metadata: nil
70
73
  )
71
74
  @query = query.class < ActiveRecord::Relation ? query.to_sql : query if query
72
75
  @model = query.class < ActiveRecord::Relation ? query.base_class : model if model || query
@@ -83,6 +86,7 @@ class QueryHelper
83
86
  @search_string = search_string if search_string
84
87
  @page = determine_page(page: page, per_page: per_page) if page
85
88
  @per_page = determine_per_page(page: page, per_page: per_page) if per_page
89
+ @metadata = metadata if metadata
86
90
  set_limit_and_offset()
87
91
  return self
88
92
  end
@@ -175,6 +179,29 @@ class QueryHelper
175
179
  return @results
176
180
  end
177
181
 
182
+ def pagination_results(count=@count)
183
+ # Set pagination params if they aren't provided
184
+ results_per_page = @per_page || count
185
+ results_page = @page || 1
186
+
187
+ total_pages = (count/(results_per_page.nonzero? || 1).to_f).ceil
188
+ next_page = results_page + 1 if results_page.between?(1, total_pages - 1)
189
+ previous_page = results_page - 1 if results_page.between?(2, total_pages)
190
+ first_page = results_page == 1
191
+ last_page = results_page == total_pages
192
+ out_of_range = !results_page.between?(1,total_pages)
193
+
194
+ { count: count,
195
+ current_page: results_page,
196
+ next_page: next_page,
197
+ previous_page: previous_page,
198
+ total_pages: total_pages,
199
+ per_page: results_per_page,
200
+ first_page: first_page,
201
+ last_page: last_page,
202
+ out_of_range: out_of_range }
203
+ end
204
+
178
205
  private
179
206
 
180
207
  def determine_page(page:, per_page:)
@@ -203,7 +230,8 @@ class QueryHelper
203
230
 
204
231
  def paginated_results
205
232
  { pagination: pagination_results(),
206
- data: @results }
233
+ data: @results,
234
+ metadata: @metadata }
207
235
  end
208
236
 
209
237
  def determine_count
@@ -234,29 +262,6 @@ class QueryHelper
234
262
  @results.map!{ |r| r.except("_query_full_count") } if @page && @per_page && !@single_record
235
263
  end
236
264
 
237
- def pagination_results
238
- # Set pagination params if they aren't provided
239
- results_per_page = @per_page || @count
240
- results_page = @page || 1
241
-
242
- total_pages = (@count/(results_per_page.nonzero? || 1).to_f).ceil
243
- next_page = results_page + 1 if results_page.between?(1, total_pages - 1)
244
- previous_page = results_page - 1 if results_page.between?(2, total_pages)
245
- first_page = results_page == 1
246
- last_page = results_page == total_pages
247
- out_of_range = !results_page.between?(1,total_pages)
248
-
249
- { count: @count,
250
- current_page: results_page,
251
- next_page: next_page,
252
- previous_page: previous_page,
253
- total_pages: total_pages,
254
- per_page: results_per_page,
255
- first_page: first_page,
256
- last_page: last_page,
257
- out_of_range: out_of_range }
258
- end
259
-
260
265
  def create_column_maps
261
266
  ColumnMap.create_column_mappings(
262
267
  query: @query,
@@ -17,6 +17,10 @@ class QueryHelper
17
17
  @query_helper = QueryHelper.new(**query_helper_params, api_payload: true)
18
18
  end
19
19
 
20
+ def create_query_helper_with_no_pagination
21
+ @query_helper = query_helper_with_no_pagination()
22
+ end
23
+
20
24
  def reload_query_params(query_helper=@query_helper)
21
25
  query_helper.update(**query_helper_params)
22
26
  end
@@ -55,7 +55,7 @@ class QueryHelper
55
55
 
56
56
  def insert_order_by_and_limit_clause
57
57
  @sql.slice!(@parser.limit_clause) if @parser.limit_included? # remove existing limit clause
58
- @sql.slice!(@parser.order_by_clause) if @parser.order_by_included? # remove existing order by clause
58
+ @sql.slice!(@parser.order_by_clause) if @parser.order_by_included? && @order_by_clauses.length > 0 # remove existing order by clause
59
59
  @sql += " order by #{@order_by_clauses.join(", ")} " if @order_by_clauses.length > 0
60
60
  @sql += " limit :limit offset :offset " if @include_limit_clause
61
61
  end
@@ -1,3 +1,3 @@
1
1
  class QueryHelper
2
- VERSION = "0.2.9"
2
+ VERSION = "0.2.14"
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.9
4
+ version: 0.2.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evan McDaniel
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-23 00:00:00.000000000 Z
11
+ date: 2020-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler