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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/query_helper.rb +33 -28
- data/lib/query_helper/sql_manipulator.rb +1 -1
- data/lib/query_helper/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a322338c9c9fd1675506690061efb3e40715f8efb438a6a552335cb7948a3e86
|
4
|
+
data.tar.gz: 6da1ce413feabd5f72b48fe599b6ce020e6288830af637e9c330a2083a49e91f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b0257379a11c98ed103f6cdd9751d341b815bb817789ee0b8054438c920813c94d2b25c4c5d26a75de53734e8ccf78b6a7077516011b3fd021a561a12681fda5
|
7
|
+
data.tar.gz: f75e4d2e80c083dc579829b46443b1dc6661a8fd57b648ed1d2ebedda14c016cf5d78a82ba388998e320d42d7ac065d2f7644b0c266076ea33a6afe595400800
|
data/Gemfile.lock
CHANGED
data/lib/query_helper.rb
CHANGED
@@ -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
|
-
|
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
|
data/lib/query_helper/version.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2020-07-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|