query_helper 0.2.8 → 0.2.9
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 +37 -22
- data/lib/query_helper/query_helper_concern.rb +14 -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: ad62903d54b1df9280b687c57da64e7a8a94e0919c156a1176f517248c69065e
|
4
|
+
data.tar.gz: d6c25ed277261ea00685c57bee58432bbc208d76f6e4b42d9ce3401173e3f35a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: abeb83f9d294ee0a0d0dcc7ed1c702b9f8d2858ce8da6c82b5cd8fc12c45634865cb68cdfc994851362fc4180d38d31b992bda0f35e0ec1b21c0462a29b61999
|
7
|
+
data.tar.gz: cddfa33a462fb4391bb736a39405309fbb980ab14e72040e4924fa898c0d95aac69bf4635b6f312df694480827969a715d4f77452aa6303c9f90236f2e0688f7
|
data/Gemfile.lock
CHANGED
data/lib/query_helper.rb
CHANGED
@@ -40,6 +40,7 @@ class QueryHelper
|
|
40
40
|
@sql_sort = sql_sort
|
41
41
|
@page = determine_page(page: page, per_page: per_page)
|
42
42
|
@per_page = determine_per_page(page: page, per_page: per_page)
|
43
|
+
set_limit_and_offset()
|
43
44
|
@single_record = single_record
|
44
45
|
@associations = associations
|
45
46
|
@as_json_options = as_json_options
|
@@ -48,15 +49,6 @@ class QueryHelper
|
|
48
49
|
@preload = preload
|
49
50
|
@search_fields = search_fields
|
50
51
|
@search_string = search_string
|
51
|
-
|
52
|
-
if @page && @per_page
|
53
|
-
# Determine limit and offset
|
54
|
-
limit = @per_page
|
55
|
-
offset = (@page - 1) * @per_page
|
56
|
-
|
57
|
-
# Merge limit/offset variables into bind_variables
|
58
|
-
@bind_variables.merge!({limit: limit, offset: offset})
|
59
|
-
end
|
60
52
|
end
|
61
53
|
|
62
54
|
def update(
|
@@ -69,7 +61,12 @@ class QueryHelper
|
|
69
61
|
single_record: nil,
|
70
62
|
custom_mappings: nil,
|
71
63
|
preload: [],
|
72
|
-
search_fields: nil
|
64
|
+
search_fields: nil,
|
65
|
+
sql_filter: nil,
|
66
|
+
sql_sort: nil,
|
67
|
+
page: nil,
|
68
|
+
per_page: nil,
|
69
|
+
search_string: nil
|
73
70
|
)
|
74
71
|
@query = query.class < ActiveRecord::Relation ? query.to_sql : query if query
|
75
72
|
@model = query.class < ActiveRecord::Relation ? query.base_class : model if model || query
|
@@ -81,6 +78,12 @@ class QueryHelper
|
|
81
78
|
@custom_mappings = custom_mappings if custom_mappings
|
82
79
|
@preload = preload if preload
|
83
80
|
@search_fields = search_fields if search_fields
|
81
|
+
@sql_filter = sql_filter if sql_filter
|
82
|
+
@sql_sort = sql_sort if sql_sort
|
83
|
+
@search_string = search_string if search_string
|
84
|
+
@page = determine_page(page: page, per_page: per_page) if page
|
85
|
+
@per_page = determine_per_page(page: page, per_page: per_page) if per_page
|
86
|
+
set_limit_and_offset()
|
84
87
|
return self
|
85
88
|
end
|
86
89
|
|
@@ -110,7 +113,7 @@ class QueryHelper
|
|
110
113
|
|
111
114
|
having_clauses = @sql_filter.having_clauses
|
112
115
|
where_clauses = @sql_filter.where_clauses
|
113
|
-
|
116
|
+
|
114
117
|
if @search_string
|
115
118
|
search_filter = search_filter(column_maps)
|
116
119
|
if search_filter[:placement] == :where
|
@@ -123,7 +126,7 @@ class QueryHelper
|
|
123
126
|
|
124
127
|
# merge the filter bind variables into the query bind variables
|
125
128
|
@bind_variables.merge!(@sql_filter.bind_variables)
|
126
|
-
|
129
|
+
|
127
130
|
# Execute Sql Query
|
128
131
|
manipulator = SqlManipulator.new(
|
129
132
|
sql: @query,
|
@@ -186,6 +189,18 @@ class QueryHelper
|
|
186
189
|
return nil
|
187
190
|
end
|
188
191
|
|
192
|
+
def set_limit_and_offset
|
193
|
+
if @page && @per_page
|
194
|
+
# Determine limit and offset
|
195
|
+
limit = @per_page
|
196
|
+
offset = (@page - 1) * @per_page
|
197
|
+
|
198
|
+
# Merge limit/offset variables into bind_variables
|
199
|
+
@bind_variables[:limit] = limit
|
200
|
+
@bind_variables[:offset] = offset
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
189
204
|
def paginated_results
|
190
205
|
{ pagination: pagination_results(),
|
191
206
|
data: @results }
|
@@ -221,22 +236,22 @@ class QueryHelper
|
|
221
236
|
|
222
237
|
def pagination_results
|
223
238
|
# Set pagination params if they aren't provided
|
224
|
-
@per_page
|
225
|
-
@page
|
239
|
+
results_per_page = @per_page || @count
|
240
|
+
results_page = @page || 1
|
226
241
|
|
227
|
-
total_pages = (@count/(
|
228
|
-
next_page =
|
229
|
-
previous_page =
|
230
|
-
first_page =
|
231
|
-
last_page =
|
232
|
-
out_of_range =
|
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)
|
233
248
|
|
234
249
|
{ count: @count,
|
235
|
-
current_page:
|
250
|
+
current_page: results_page,
|
236
251
|
next_page: next_page,
|
237
252
|
previous_page: previous_page,
|
238
253
|
total_pages: total_pages,
|
239
|
-
per_page:
|
254
|
+
per_page: results_per_page,
|
240
255
|
first_page: first_page,
|
241
256
|
last_page: last_page,
|
242
257
|
out_of_range: out_of_range }
|
@@ -9,10 +9,18 @@ class QueryHelper
|
|
9
9
|
@query_helper
|
10
10
|
end
|
11
11
|
|
12
|
+
def query_helper_with_no_pagination
|
13
|
+
QueryHelper.new(**query_helper_params_no_pagination)
|
14
|
+
end
|
15
|
+
|
12
16
|
def create_query_helper
|
13
17
|
@query_helper = QueryHelper.new(**query_helper_params, api_payload: true)
|
14
18
|
end
|
15
19
|
|
20
|
+
def reload_query_params(query_helper=@query_helper)
|
21
|
+
query_helper.update(**query_helper_params)
|
22
|
+
end
|
23
|
+
|
16
24
|
def create_query_helper_filter
|
17
25
|
filter_values = params[:filter].permit!.to_h
|
18
26
|
QueryHelper::SqlFilter.new(filter_values: filter_values)
|
@@ -27,9 +35,14 @@ class QueryHelper
|
|
27
35
|
end
|
28
36
|
|
29
37
|
def query_helper_params
|
30
|
-
helpers =
|
38
|
+
helpers = query_helper_params_no_pagination
|
31
39
|
helpers[:page] = params[:page] if params[:page]
|
32
40
|
helpers[:per_page] = params[:per_page] if params[:per_page]
|
41
|
+
helpers
|
42
|
+
end
|
43
|
+
|
44
|
+
def query_helper_params_no_pagination
|
45
|
+
helpers = {}
|
33
46
|
helpers[:sql_filter] = create_query_helper_filter() if params[:filter]
|
34
47
|
helpers[:sql_sort] = create_query_helper_sort() if params[:sort]
|
35
48
|
helpers[:associations] = create_query_helper_associations() if params[:include]
|
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.9
|
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-
|
11
|
+
date: 2020-04-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|