sortable-by 0.13.1 → 0.13.2

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: 4bb07dd11741d2ea29ae694e1e6bc11711e8427b137855ff84fe6760e182e59e
4
- data.tar.gz: a5d2b6e874053630307e891855e542b6874adad75788e6a0c822a2e9336d490d
3
+ metadata.gz: 6412f520dea934585eaa16b0ec4f4b45fb088ed0274057de0c9c4ad38bd05d2c
4
+ data.tar.gz: 76a714b65c57e5c3b56ded227be2cfe80f66e469435b3d7f0c94bd11f1364493
5
5
  SHA512:
6
- metadata.gz: 95feb9e2a5ba054e128572c35da39246760472ecb12c456976e267cac7eaa425c61505bce2037af98c5e33d5f20513571405395f1c462ad2054f6032d6600a5c
7
- data.tar.gz: 610babd95b3ba593f9f566720e549929e13aef5031aa7330f7e87a07feac48b68483f2c5d2bc14489d81dd0728e39d405aeeb6d7681437598a98078e10f2e437
6
+ metadata.gz: eefaafc008737c4f728164566d6a73a23fb845f04e84660eed18b6ba9770c8b3649c4d7d26b7376cf1f2b24e84e5054bed6038cf0a6ad863cce5db2985dc804d
7
+ data.tar.gz: 06acb810e43171c8a8e3687c9ebfde4f193750aed2449b5360d7bcc9bffb660b7dc574cbd01f1b6af8923dfb3b7a5bb873a1532f4227b8e16c4a18a770bd2095
@@ -1,4 +1,4 @@
1
- name: Ruby
1
+ name: Test
2
2
 
3
3
  on:
4
4
  push:
@@ -7,7 +7,7 @@ on:
7
7
  branches: [main]
8
8
 
9
9
  jobs:
10
- test:
10
+ ruby:
11
11
  runs-on: ubuntu-latest
12
12
  strategy:
13
13
  matrix:
data/Gemfile.lock CHANGED
@@ -1,19 +1,19 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sortable-by (0.13.1)
4
+ sortable-by (0.13.2)
5
5
  activerecord
6
6
  activesupport
7
7
 
8
8
  GEM
9
9
  remote: http://rubygems.org/
10
10
  specs:
11
- activemodel (6.1.3)
12
- activesupport (= 6.1.3)
13
- activerecord (6.1.3)
14
- activemodel (= 6.1.3)
15
- activesupport (= 6.1.3)
16
- activesupport (6.1.3)
11
+ activemodel (6.1.3.2)
12
+ activesupport (= 6.1.3.2)
13
+ activerecord (6.1.3.2)
14
+ activemodel (= 6.1.3.2)
15
+ activesupport (= 6.1.3.2)
16
+ activesupport (6.1.3.2)
17
17
  concurrent-ruby (~> 1.0, >= 1.0.2)
18
18
  i18n (>= 1.6, < 2)
19
19
  minitest (>= 5.1)
@@ -22,17 +22,16 @@ GEM
22
22
  ast (2.4.2)
23
23
  concurrent-ruby (1.1.8)
24
24
  diff-lcs (1.4.4)
25
- i18n (1.8.9)
25
+ i18n (1.8.10)
26
26
  concurrent-ruby (~> 1.0)
27
27
  minitest (5.14.4)
28
28
  parallel (1.20.1)
29
- parser (3.0.0.0)
29
+ parser (3.0.1.1)
30
30
  ast (~> 2.4.1)
31
- rack (2.2.3)
32
31
  rainbow (3.0.0)
33
32
  rake (13.0.3)
34
33
  regexp_parser (2.1.1)
35
- rexml (3.2.4)
34
+ rexml (3.2.5)
36
35
  rspec (3.10.0)
37
36
  rspec-core (~> 3.10.0)
38
37
  rspec-expectations (~> 3.10.0)
@@ -46,33 +45,28 @@ GEM
46
45
  diff-lcs (>= 1.2.0, < 2.0)
47
46
  rspec-support (~> 3.10.0)
48
47
  rspec-support (3.10.2)
49
- rubocop (1.11.0)
48
+ rubocop (1.16.0)
50
49
  parallel (~> 1.10)
51
50
  parser (>= 3.0.0.0)
52
51
  rainbow (>= 2.2.2, < 4.0)
53
52
  regexp_parser (>= 1.8, < 3.0)
54
53
  rexml
55
- rubocop-ast (>= 1.2.0, < 2.0)
54
+ rubocop-ast (>= 1.7.0, < 2.0)
56
55
  ruby-progressbar (~> 1.7)
57
56
  unicode-display_width (>= 1.4.0, < 3.0)
58
- rubocop-ast (1.4.1)
59
- parser (>= 2.7.1.5)
60
- rubocop-bsm (0.5.4)
57
+ rubocop-ast (1.7.0)
58
+ parser (>= 3.0.1.1)
59
+ rubocop-bsm (0.6.0)
61
60
  rubocop (~> 1.0)
62
61
  rubocop-performance
63
- rubocop-rails
64
62
  rubocop-rake
65
63
  rubocop-rspec
66
- rubocop-performance (1.10.1)
67
- rubocop (>= 0.90.0, < 2.0)
64
+ rubocop-performance (1.11.3)
65
+ rubocop (>= 1.7.0, < 2.0)
68
66
  rubocop-ast (>= 0.4.0)
69
- rubocop-rails (2.9.1)
70
- activesupport (>= 4.2.0)
71
- rack (>= 1.1)
72
- rubocop (>= 0.90.0, < 2.0)
73
67
  rubocop-rake (0.5.1)
74
68
  rubocop
75
- rubocop-rspec (2.2.0)
69
+ rubocop-rspec (2.3.0)
76
70
  rubocop (~> 1.0)
77
71
  rubocop-ast (>= 1.1.0)
78
72
  ruby-progressbar (1.11.0)
@@ -94,4 +88,4 @@ DEPENDENCIES
94
88
  sqlite3
95
89
 
96
90
  BUNDLED WITH
97
- 2.1.4
91
+ 2.2.19
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Sortable By
2
2
 
3
- [![Build Status](https://travis-ci.org/bsm/sortable-by.png?branch=master)](https://travis-ci.org/bsm/sortable-by)
3
+ [![Test](https://github.com/bsm/sortable-by/actions/workflows/test.yml/badge.svg)](https://github.com/bsm/sortable-by/actions/workflows/test.yml)
4
4
  [![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
5
5
 
6
6
  ActiveRecord plugin to parse the sort order from a query parameter, match against a white-list and generate a scope. Useful for [JSON-API][jsonapi] compatibility.
@@ -20,10 +20,12 @@ class Post < ActiveRecord::Base
20
20
  sortable_by :title, :id
21
21
  end
22
22
 
23
- Post.sorted_by('title') # => ORDER BY LOWER(posts.title) ASC
24
- Post.sorted_by('-title') # => ORDER BY LOWER(posts.title) DESC
25
- Post.sorted_by('bad,title') # => ORDER BY LOWER(posts.title) ASC
26
- Post.sorted_by(nil) # => ORDER BY LOWER(posts.title) ASC
23
+ Post.sorted_by('title') # => ORDER BY LOWER(posts.title) ASC
24
+ Post.sorted_by('-title') # => ORDER BY LOWER(posts.title) DESC
25
+ Post.sorted_by('title,-id') # => ORDER BY LOWER(posts.title) ASC, id DESC
26
+ Post.sorted_by(['title', '-id']) # => ORDER BY LOWER(posts.title) ASC, id DESC
27
+ Post.sorted_by('bad,title') # => ORDER BY LOWER(posts.title) ASC
28
+ Post.sorted_by(nil) # => ORDER BY LOWER(posts.title) ASC
27
29
  ```
28
30
 
29
31
  Case-sensitive:
data/lib/sortable_by.rb CHANGED
@@ -38,7 +38,7 @@ module ActiveRecord # :nodoc:
38
38
 
39
39
  def order(relation, expr, fallback: true)
40
40
  matched = false
41
- expr.to_s.split(',').each do |name|
41
+ Array.wrap(expr).flat_map {|v| v.to_s.split(',') }.each do |name|
42
42
  name.strip!
43
43
 
44
44
  rank = :asc
data/sortable-by.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'sortable-by'
3
- s.version = '0.13.1'
3
+ s.version = '0.13.2'
4
4
  s.authors = ['Dimitrij Denissenko']
5
5
  s.email = ['dimitrij@blacksquaremedia.com']
6
6
  s.summary = 'Generate white-listed sort scopes from URL parameter values'
@@ -24,7 +24,7 @@ describe ActiveRecord::SortableBy do
24
24
  expect(Product._sortable_by_config._default).to eq('shop,name')
25
25
  end
26
26
 
27
- it 'simplies order' do
27
+ it 'supports simple ordering' do
28
28
  Post.create! title: 'A', created_at: Time.at(1515151500)
29
29
  Post.create! title: 'b', created_at: Time.at(1515151600)
30
30
  Post.create! title: 'C', created_at: Time.at(1515151400)
@@ -41,6 +41,15 @@ describe ActiveRecord::SortableBy do
41
41
  expect(Post.sorted_by(' title ').pluck(:title)).to eq(%w[A C b])
42
42
  end
43
43
 
44
+ it 'supports array params' do
45
+ Post.create! title: 'A', created_at: Time.at(1515151500)
46
+ Post.create! title: 'C', created_at: Time.at(1515151400)
47
+ Post.create! title: 'B', created_at: Time.at(1515151400)
48
+
49
+ expect(Post.sorted_by(['created', '-title']).pluck(:title)).to eq(%w[C B A])
50
+ expect(Post.sorted_by(['created , -title']).pluck(:title)).to eq(%w[C B A])
51
+ end
52
+
44
53
  it 'supports STI inheritance and overrides' do
45
54
  SubPost.create! title: 'A', created_at: Time.at(1515151700)
46
55
  SubPost.create! title: 'b', created_at: Time.at(1515151600)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sortable-by
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.1
4
+ version: 0.13.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dimitrij Denissenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-02 00:00:00.000000000 Z
11
+ date: 2021-06-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -115,7 +115,7 @@ executables: []
115
115
  extensions: []
116
116
  extra_rdoc_files: []
117
117
  files:
118
- - ".github/workflows/ruby.yml"
118
+ - ".github/workflows/test.yml"
119
119
  - ".gitignore"
120
120
  - ".rubocop.yml"
121
121
  - Gemfile
@@ -147,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
147
  - !ruby/object:Gem::Version
148
148
  version: '0'
149
149
  requirements: []
150
- rubygems_version: 3.1.4
150
+ rubygems_version: 3.2.15
151
151
  signing_key:
152
152
  specification_version: 4
153
153
  summary: Generate white-listed sort scopes from URL parameter values