query_helper 0.2.10 → 0.2.15

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: 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