query_helper 0.2.10 → 0.2.15

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: 6e3dd5610d199d135d33794e31fd824b8e740ee9b80a0418367aca153b384fa7
4
- data.tar.gz: acdce15045001595f1fe71a1761e28997b9438fc2cba1309eaaa22fbf5d804dd
3
+ metadata.gz: a322338c9c9fd1675506690061efb3e40715f8efb438a6a552335cb7948a3e86
4
+ data.tar.gz: 6da1ce413feabd5f72b48fe599b6ce020e6288830af637e9c330a2083a49e91f
5
5
  SHA512:
6
- metadata.gz: dbece4da70456952af5ef843e0f0d10e9742179082027eb91b6cb772709521576a598648cab59544473ef1511136757a36658cdc910cf8eaf30cf6370f87ded6
7
- data.tar.gz: 955ea1597dfa7bd8f387f3c27e35fd632e42fdb04dde6902e81bedeedaca2d12f4807ed5deb2c9b579e7f3952b004766cbefddd0d6e0d212acfe7a13d178b2db
6
+ metadata.gz: b0257379a11c98ed103f6cdd9751d341b815bb817789ee0b8054438c920813c94d2b25c4c5d26a75de53734e8ccf78b6a7077516011b3fd021a561a12681fda5
7
+ data.tar.gz: f75e4d2e80c083dc579829b46443b1dc6661a8fd57b648ed1d2ebedda14c016cf5d78a82ba388998e320d42d7ac065d2f7644b0c266076ea33a6afe595400800
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- query_helper (0.2.10)
4
+ query_helper (0.2.15)
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
@@ -140,7 +144,7 @@ class QueryHelper
140
144
  end
141
145
 
142
146
  def to_json(args)
143
- JSON.generate(results)
147
+ results.to_json
144
148
  end
145
149
 
146
150
  def to_sql
@@ -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,
@@ -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.10"
2
+ VERSION = "0.2.15"
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.10
4
+ version: 0.2.15
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-27 00:00:00.000000000 Z
11
+ date: 2020-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler