query_helper 0.2.19 → 0.2.20

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: c3bc15fea354655ec8dc8ab74e84849104d7f13e8f0dfc064d7210d75642ae60
4
- data.tar.gz: cdb0d638c3afc722e19816d136a1a27f5716e1d06bc838eeea481d6995438f7c
3
+ metadata.gz: 20ef59e4a5c449b359942acdf2577f6e756aa24df46175ab7c066a878d737a3e
4
+ data.tar.gz: 155d7aedaeb4b2da6ae1984217307dbb7144e19565cc28d1fdd920879adb4c6b
5
5
  SHA512:
6
- metadata.gz: 4ce4101f690100aabd91841e8866daa1bffc728d5b741739707dc28bdb220dc2851974fb468d11ad5c681d5aa3315c49e93e3de7b197046e4badfd8bdb339866
7
- data.tar.gz: 65aaa2d1e2d37ae994968728df34027cd846ff4e38c6c25771c64c90bffde48d799fb70ddffdadbee7b6a7584055e2ba8a43a32155a2aff1e2e0c6311c98261d
6
+ metadata.gz: 1ee0d63818c17954054138587d5d6a49a175119bb37432e4c99952f638b8f39c4b81130e14eaf9e51e6715cb3fcd4527b23382c2caef7721f05dbe874cab07f6
7
+ data.tar.gz: 2295b50557aa7d74c9d713c4cfd4732f479fca0c026f101e9969562c7c8f68fe762324a4215c40cc722abfa0129e062ef995a504b3f060f6842ce27013cf9185
data/Gemfile.lock CHANGED
@@ -1,32 +1,32 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- query_helper (0.2.19)
4
+ query_helper (0.2.20)
5
5
  activerecord (> 5)
6
6
  activesupport (> 5)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- actionpack (6.0.3.2)
12
- actionview (= 6.0.3.2)
13
- activesupport (= 6.0.3.2)
11
+ actionpack (6.0.3.5)
12
+ actionview (= 6.0.3.5)
13
+ activesupport (= 6.0.3.5)
14
14
  rack (~> 2.0, >= 2.0.8)
15
15
  rack-test (>= 0.6.3)
16
16
  rails-dom-testing (~> 2.0)
17
17
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
18
- actionview (6.0.3.2)
19
- activesupport (= 6.0.3.2)
18
+ actionview (6.0.3.5)
19
+ activesupport (= 6.0.3.5)
20
20
  builder (~> 3.1)
21
21
  erubi (~> 1.4)
22
22
  rails-dom-testing (~> 2.0)
23
23
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
24
- activemodel (6.0.3.2)
25
- activesupport (= 6.0.3.2)
26
- activerecord (6.0.3.2)
27
- activemodel (= 6.0.3.2)
28
- activesupport (= 6.0.3.2)
29
- activesupport (6.0.3.2)
24
+ activemodel (6.0.3.5)
25
+ activesupport (= 6.0.3.5)
26
+ activerecord (6.0.3.5)
27
+ activemodel (= 6.0.3.5)
28
+ activesupport (= 6.0.3.5)
29
+ activesupport (6.0.3.5)
30
30
  concurrent-ruby (~> 1.0, >= 1.0.2)
31
31
  i18n (>= 0.7, < 2)
32
32
  minitest (~> 5.1)
@@ -46,10 +46,12 @@ GEM
46
46
  crass (~> 1.0.2)
47
47
  nokogiri (>= 1.5.9)
48
48
  method_source (1.0.0)
49
- mini_portile2 (2.4.0)
49
+ mini_portile2 (2.5.0)
50
50
  minitest (5.14.1)
51
- nokogiri (1.10.10)
52
- mini_portile2 (~> 2.4.0)
51
+ nokogiri (1.11.1)
52
+ mini_portile2 (~> 2.5.0)
53
+ racc (~> 1.4)
54
+ racc (1.5.2)
53
55
  rack (2.2.3)
54
56
  rack-test (1.1.0)
55
57
  rack (>= 1.0, < 3)
@@ -58,9 +60,9 @@ GEM
58
60
  nokogiri (>= 1.6)
59
61
  rails-html-sanitizer (1.3.0)
60
62
  loofah (~> 2.3)
61
- railties (6.0.3.2)
62
- actionpack (= 6.0.3.2)
63
- activesupport (= 6.0.3.2)
63
+ railties (6.0.3.5)
64
+ actionpack (= 6.0.3.5)
65
+ activesupport (= 6.0.3.5)
64
66
  method_source
65
67
  rake (>= 0.8.7)
66
68
  thor (>= 0.20.3, < 2.0)
@@ -99,7 +101,7 @@ PLATFORMS
99
101
  DEPENDENCIES
100
102
  actionpack
101
103
  activesupport
102
- bundler (~> 1.17)
104
+ bundler (~> 2.2.6)
103
105
  byebug
104
106
  faker (~> 1.9.3)
105
107
  query_helper!
@@ -109,4 +111,4 @@ DEPENDENCIES
109
111
  sqlite3 (~> 1.3.6)
110
112
 
111
113
  BUNDLED WITH
112
- 1.17.3
114
+ 2.2.6
data/lib/query_helper.rb CHANGED
@@ -66,6 +66,7 @@ class QueryHelper
66
66
  search_fields: nil,
67
67
  sql_filter: nil,
68
68
  sql_sort: nil,
69
+ sort_tiebreak: nil,
69
70
  page: nil,
70
71
  per_page: nil,
71
72
  search_string: nil,
@@ -83,6 +84,7 @@ class QueryHelper
83
84
  @search_fields = search_fields if search_fields
84
85
  @sql_filter = sql_filter if sql_filter
85
86
  @sql_sort = sql_sort if sql_sort
87
+ @sql_sort.sort_tiebreak = sort_tiebreak if sort_tiebreak
86
88
  @search_string = search_string if search_string
87
89
  @page = determine_page(page: page, per_page: per_page) if page
88
90
  @per_page = determine_per_page(page: page, per_page: per_page) if per_page
@@ -31,7 +31,7 @@ class QueryHelper
31
31
  end
32
32
 
33
33
  def create_query_helper_sort
34
- QueryHelper::SqlSort.new(sort_string: params[:sort])
34
+ QueryHelper::SqlSort.new(sort_string: params[:sort], sort_tiebreak: params[:sort_tiebreak])
35
35
  end
36
36
 
37
37
  def create_query_helper_associations
@@ -48,7 +48,7 @@ class QueryHelper
48
48
  def query_helper_params_no_pagination
49
49
  helpers = {}
50
50
  helpers[:sql_filter] = create_query_helper_filter() if params[:filter]
51
- helpers[:sql_sort] = create_query_helper_sort() if params[:sort]
51
+ helpers[:sql_sort] = create_query_helper_sort() if params[:sort] || params[:sort_tiebreak]
52
52
  helpers[:associations] = create_query_helper_associations() if params[:include]
53
53
  helpers[:search_string] = params[:search_for] if params[:search_for]
54
54
  helpers
@@ -3,22 +3,33 @@ require "query_helper/invalid_query_error"
3
3
  class QueryHelper
4
4
  class SqlSort
5
5
 
6
- attr_accessor :column_maps, :select_strings
6
+ attr_accessor :column_maps, :select_strings, :sort_tiebreak
7
7
 
8
- def initialize(sort_string: "", column_maps: [])
8
+ def initialize(sort_string: "", sort_tiebreak: "", column_maps: [])
9
9
  @sort_string = sort_string
10
10
  @column_maps = column_maps
11
+ @sort_tiebreak = sort_tiebreak
11
12
  @select_strings = []
12
13
  end
13
14
 
14
15
  def parse_sort_string
16
+ return [] if @sort_string.blank? && @sort_tiebreak.blank?
17
+
18
+ return attributes_sql_expression(@sort_tiebreak) if @sort_string.blank?
19
+
20
+ sql_strings = attributes_sql_expression(@sort_string)
21
+ return sql_strings if @sort_tiebreak.blank?
22
+
23
+ sql_strings + attributes_sql_expression(@sort_tiebreak)
24
+ end
25
+
26
+ def attributes_sql_expression(sort_attribute)
15
27
  sql_strings = []
16
- sorts = @sort_string.split(",")
28
+ sorts = sort_attribute.split(",")
17
29
  sorts.each_with_index do |sort, index|
18
30
  sort_alias = sort.split(":")[0]
19
31
  direction = sort.split(":")[1]
20
32
  modifier = sort.split(":")[2]
21
-
22
33
  begin
23
34
  sql_expression = @column_maps.find{ |m| m.alias_name == sort_alias }.sql_expression
24
35
  rescue NoMethodError => e
@@ -45,8 +56,7 @@ class QueryHelper
45
56
 
46
57
  sql_strings << "#{sql_expression} #{direction}"
47
58
  end
48
-
49
- return sql_strings
59
+ sql_strings
50
60
  end
51
61
  end
52
62
  end
@@ -1,3 +1,3 @@
1
1
  class QueryHelper
2
- VERSION = "0.2.19"
2
+ VERSION = "0.2.20"
3
3
  end
data/query_helper.gemspec CHANGED
@@ -36,7 +36,7 @@ Gem::Specification.new do |spec|
36
36
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
37
37
  spec.require_paths = ["lib"]
38
38
 
39
- spec.add_development_dependency "bundler", "~> 1.17"
39
+ spec.add_development_dependency "bundler", "~> 2.2.6"
40
40
  spec.add_development_dependency "rake", "~> 13.0"
41
41
  spec.add_development_dependency "rspec", "~> 3.0"
42
42
  spec.add_development_dependency "sqlite3", "~> 1.3.6"
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.19
4
+ version: 0.2.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evan McDaniel
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-11 00:00:00.000000000 Z
11
+ date: 2021-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.17'
19
+ version: 2.2.6
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.17'
26
+ version: 2.2.6
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -199,7 +199,7 @@ homepage: https://github.com/iserve-products/query_helper
199
199
  licenses:
200
200
  - MIT
201
201
  metadata: {}
202
- post_install_message:
202
+ post_install_message:
203
203
  rdoc_options: []
204
204
  require_paths:
205
205
  - lib
@@ -214,8 +214,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
214
214
  - !ruby/object:Gem::Version
215
215
  version: '0'
216
216
  requirements: []
217
- rubygems_version: 3.0.3
218
- signing_key:
217
+ rubygems_version: 3.1.4
218
+ signing_key:
219
219
  specification_version: 4
220
220
  summary: Ruby Gem to help with pagination and data formatting at Pattern, Inc.
221
221
  test_files: []