dhs 1.1.0 → 1.2.0
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/README.md +14 -0
- data/lib/dhs/concerns/record/chainable.rb +14 -0
- data/lib/dhs/version.rb +1 -1
- data/spec/record/order_spec.rb +37 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca31fdaf95b8fbff1a8de50591e9861554d00fed99645e79f01cd2363de9e8b7
|
4
|
+
data.tar.gz: 06d8d350c5da6878fd6c54a76826bb56c4fb506f6bc8c9be732743014b875f50
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 00035a95ea3b634fc97f6af5c7592b32e09a7135a371d29e234c54ee240da99b1b71ce8305b6342aa61b7fb9103c26576a6e729cfead930d7754745d106b5bda
|
7
|
+
data.tar.gz: 8f844da13a8f5d011b6179310b5ac1629853f3be24496eeba52b425412a5d7159fd2cb89744953afa2a0d615ef696c04993e3b3f921891bac060bd8d1702d63d
|
data/README.md
CHANGED
@@ -305,6 +305,20 @@ records = Record.blue.available(true)
|
|
305
305
|
GET https://service.example.com/records?color=blue&available=true
|
306
306
|
```
|
307
307
|
|
308
|
+
#### order
|
309
|
+
|
310
|
+
Set the expected order of things using `.order`
|
311
|
+
|
312
|
+
```ruby
|
313
|
+
# app/controllers/some_controller.rb
|
314
|
+
|
315
|
+
Record.where(color: 'blue').order(:name, { created_at: :desc })
|
316
|
+
|
317
|
+
```
|
318
|
+
```
|
319
|
+
GET https://service.example.com/records?color=blue&order[name]=asc&order[created_at]=desc
|
320
|
+
```
|
321
|
+
|
308
322
|
#### all
|
309
323
|
|
310
324
|
You can fetch all remote records by using `all`. Pagination will be performed automatically (See: [Record pagination](#record-pagination))
|
@@ -222,6 +222,20 @@ class DHS::Record
|
|
222
222
|
end
|
223
223
|
end
|
224
224
|
|
225
|
+
def order(*args)
|
226
|
+
order_params = {}
|
227
|
+
args.each do |arg|
|
228
|
+
if arg.is_a?(Hash)
|
229
|
+
arg.each do |key, value|
|
230
|
+
order_params[key] = value
|
231
|
+
end
|
232
|
+
else
|
233
|
+
order_params[arg.to_s] = 'asc'
|
234
|
+
end
|
235
|
+
end
|
236
|
+
push(Parameter.new(order: order_params))
|
237
|
+
end
|
238
|
+
|
225
239
|
def all(hash = nil)
|
226
240
|
push([Parameter.new(hash), Option.new(all: true)])
|
227
241
|
end
|
data/lib/dhs/version.rb
CHANGED
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'rails_helper'
|
4
|
+
|
5
|
+
describe DHS::Record do
|
6
|
+
context 'order in where chains' do
|
7
|
+
before do
|
8
|
+
class Record < DHS::Record
|
9
|
+
endpoint 'http://records'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
context 'single parameter for order' do
|
14
|
+
before do
|
15
|
+
stub_request(:get, 'http://records/?color=blue&order[created_at]=desc')
|
16
|
+
.to_return(body: [{ name: 'ordered by created_at desc' }].to_json)
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'allows to add order params with .order' do
|
20
|
+
records = Record.where(color: 'blue').order(created_at: :desc)
|
21
|
+
expect(records.first.name).to eq 'ordered by created_at desc'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'multiple parameters for order' do
|
26
|
+
before do
|
27
|
+
stub_request(:get, 'http://records/?color=blue&order[name]=asc&order[created_at]=desc')
|
28
|
+
.to_return(body: [{ name: 'ordered by name asc (implicitly) and created_at desc (explicitly)' }].to_json)
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'allows to add order params with .order' do
|
32
|
+
records = Record.where(color: 'blue').order(:name, created_at: :desc)
|
33
|
+
expect(records.first.name).to eq 'ordered by name asc (implicitly) and created_at desc (explicitly)'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dhs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- https://github.com/DePayFi/dhs/graphs/contributors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -517,6 +517,7 @@ files:
|
|
517
517
|
- spec/record/new_spec.rb
|
518
518
|
- spec/record/options_getter_spec.rb
|
519
519
|
- spec/record/options_spec.rb
|
520
|
+
- spec/record/order_spec.rb
|
520
521
|
- spec/record/paginatable_collection_spec.rb
|
521
522
|
- spec/record/pagination_chain_spec.rb
|
522
523
|
- spec/record/pagination_links_spec.rb
|
@@ -752,6 +753,7 @@ test_files:
|
|
752
753
|
- spec/record/new_spec.rb
|
753
754
|
- spec/record/options_getter_spec.rb
|
754
755
|
- spec/record/options_spec.rb
|
756
|
+
- spec/record/order_spec.rb
|
755
757
|
- spec/record/paginatable_collection_spec.rb
|
756
758
|
- spec/record/pagination_chain_spec.rb
|
757
759
|
- spec/record/pagination_links_spec.rb
|