grape-order 0.1.1 → 0.1.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 +5 -5
- data/.gitignore +2 -1
- data/README.md +5 -4
- data/grape-order.gemspec +1 -0
- data/lib/grape/order.rb +28 -21
- data/lib/grape/order/version.rb +1 -1
- data/spec/spec_helper.rb +3 -0
- metadata +17 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 4302de32bb2dbc9600c2c42c31165b5f442ba05add622bb79f98d296fad50824
|
4
|
+
data.tar.gz: e2074e44f9126df0b99cb0bb57e54ce5568c9b320e2358875f4cd8ebfa49cbe7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1b7d5252dc4d8f68465d9b6ce7621372da10d6c38235251ce4c089985c9404f6ef0694e2a070977bb720ba9920eba2103daa28f23db785cbd11de723867183e5
|
7
|
+
data.tar.gz: ed0c5b8b3f978765705fe5fd92be2c53c6dd03634627ed0eaa3ef9e5c5113b49f41d8b5f7570a00e8b85e14909a5a2ee31cc392e3aaf9f6cc144c499d68b2b9b
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Grape::Order []
|
1
|
+
# Grape::Order [][](https://codeclimate.com/github/PrositAS/grape-order)[](https://semaphoreci.com/prositas/grape-order)
|
2
2
|
|
3
3
|
Collection ordering for [grape](https://github.com/intridea/grape) API framework.
|
4
4
|
|
@@ -27,12 +27,12 @@ $ gem install grape-order
|
|
27
27
|
```ruby
|
28
28
|
class MyApi < Grape::API
|
29
29
|
# Include Grape::Sort module in your api
|
30
|
-
include Grape::
|
30
|
+
include Grape::Order
|
31
31
|
|
32
32
|
resource :comments do
|
33
33
|
desc 'Return a list of comments.'
|
34
34
|
|
35
|
-
# Annotate action with `
|
35
|
+
# Annotate action with `order`.
|
36
36
|
# This will add an optional param: order
|
37
37
|
#
|
38
38
|
# You can optionally set the default :order setting to the fields of your choice.
|
@@ -54,6 +54,7 @@ Now you can pass a string `order` param to HTTP request to your endpoint structu
|
|
54
54
|
|
55
55
|
- prepend field name by `-` to get ascending order, like `-created_at`
|
56
56
|
- pass multiple fields to order by separating them by comma, like `-created_at, name`
|
57
|
+
- ordering on nested resources is also supported, eg: 'posts.created_at, -comments.created_at'
|
57
58
|
|
58
59
|
```
|
59
60
|
curl -v http://lvh.me:3000/comments?order=-created_at
|
@@ -64,4 +65,4 @@ curl -v http://lvh.me:3000/comments?order=-created_at
|
|
64
65
|
The gem structure was based on https://github.com/monterail/grape-kaminari
|
65
66
|
(which can be used for pagination).
|
66
67
|
|
67
|
-
Feel free to submit issue with bug report or pull requests on GitHub at https://github.com/PrositAS/grape-order.
|
68
|
+
Feel free to submit issue with bug report or pull requests on GitHub at https://github.com/PrositAS/grape-order.
|
data/grape-order.gemspec
CHANGED
@@ -25,6 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_development_dependency "bundler", "~> 1.3"
|
26
26
|
spec.add_development_dependency "rake"
|
27
27
|
spec.add_development_dependency "pry"
|
28
|
+
spec.add_development_dependency "simplecov"
|
28
29
|
spec.add_development_dependency "rack-test"
|
29
30
|
spec.add_development_dependency "rspec", "~> 2.9"
|
30
31
|
end
|
data/lib/grape/order.rb
CHANGED
@@ -1,30 +1,37 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'grape'
|
2
|
+
require 'grape/order/version'
|
3
3
|
|
4
4
|
module Grape
|
5
|
-
module Order
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
5
|
+
module Order # :nodoc:
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
included do
|
9
|
+
helpers HelperMethods
|
10
|
+
end
|
11
|
+
|
12
|
+
module HelperMethods # :nodoc:
|
13
|
+
extend Grape::API::Helpers
|
14
|
+
|
15
|
+
def order(collection)
|
16
|
+
sorters = params[:order].split(',').map do |s|
|
17
|
+
if s[0] == '-'
|
18
|
+
"#{s[1..-1]} asc"
|
19
|
+
else
|
20
|
+
"#{s} desc"
|
18
21
|
end
|
19
22
|
end
|
23
|
+
collection.order(sorters.join(','))
|
24
|
+
end
|
25
|
+
end
|
20
26
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
27
|
+
module DSLMethods # :nodoc:
|
28
|
+
def order(sorter = nil)
|
29
|
+
params do
|
30
|
+
optional :order, type: String, default: (sorter if sorter.present?),
|
31
|
+
desc: 'Set sorting order.'
|
26
32
|
end
|
27
33
|
end
|
28
34
|
end
|
35
|
+
Grape::API.const_defined?(:Instance) ? Grape::API::Instance.extend(DSLMethods) : Grape::API.extend(DSLMethods)
|
29
36
|
end
|
30
|
-
end
|
37
|
+
end
|
data/lib/grape/order/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,11 +1,14 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
2
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
|
+
require 'simplecov'
|
4
|
+
SimpleCov.start
|
3
5
|
require 'rspec'
|
4
6
|
require 'grape'
|
5
7
|
require 'grape-order'
|
6
8
|
require 'active_record'
|
7
9
|
require 'rack/test'
|
8
10
|
|
11
|
+
|
9
12
|
# Requires supporting files with custom matchers and macros, etc,
|
10
13
|
# in ./support/ and its subdirectories.
|
11
14
|
Dir['#{File.dirname(__FILE__)}/support/**/*.rb'].each {|f| require f}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grape-order
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Grzegorz Brzezinka
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-12-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: grape
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: simplecov
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: rack-test
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -146,8 +160,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
146
160
|
- !ruby/object:Gem::Version
|
147
161
|
version: '0'
|
148
162
|
requirements: []
|
149
|
-
|
150
|
-
rubygems_version: 2.5.1
|
163
|
+
rubygems_version: 3.0.3
|
151
164
|
signing_key:
|
152
165
|
specification_version: 4
|
153
166
|
summary: collection ordering for grape
|