rest-api-generator 0.1.6 → 0.1.7
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 +3 -1
- data/README.md +30 -0
- data/app/controllers/rest_api_generator/application_controller.rb +1 -0
- data/app/controllers/rest_api_generator/child_resource_controller.rb +8 -0
- data/app/controllers/rest_api_generator/resource_controller.rb +8 -0
- data/lib/rest_api_generator/config.rb +2 -1
- data/lib/rest_api_generator/version.rb +1 -1
- data/rest-api-generator.gemspec +1 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7576268dec99ae0feafe5da3a552dae8d0609ccd244f5e62a99007e2f54090b
|
4
|
+
data.tar.gz: 0f8a227490885ada7b83f1373c854857889e710b1d24285a81b45490308419a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 19bbdd850d24d6168fda588274287ad8645b255165487261dd6413420ab395fdc150675d97ed57ac6e2d395f2bf7cc5d48632f3b43bfe2a11f06964aae71b1d7
|
7
|
+
data.tar.gz: 4653ea0a74f2377c9052eba66bb16230096598f5f3e5d52f42ff5ad5141b763b4054359c7bf360083d7e08b517249bf44b17a9a6e64765f51861961075068c65
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rest-api-generator (0.1.
|
4
|
+
rest-api-generator (0.1.7)
|
5
5
|
anyway_config (>= 2.0.0)
|
6
|
+
pagy
|
6
7
|
rails (>= 5.0)
|
7
8
|
|
8
9
|
GEM
|
@@ -129,6 +130,7 @@ GEM
|
|
129
130
|
racc (~> 1.4)
|
130
131
|
nokogiri (1.13.10-x86_64-linux)
|
131
132
|
racc (~> 1.4)
|
133
|
+
pagy (6.0.3)
|
132
134
|
parallel (1.22.1)
|
133
135
|
parser (3.1.3.0)
|
134
136
|
ast (~> 2.4.1)
|
data/README.md
CHANGED
@@ -24,6 +24,7 @@ Following [Switch Dreams's](https://www.switchdreams.com.br/]) coding practices,
|
|
24
24
|
- :memo: [Automated documentation](#specsdocs)
|
25
25
|
- [Resource ordering](#ordering)
|
26
26
|
- [Resource filter](#filtering)
|
27
|
+
- [Resource pagination](#pagination)
|
27
28
|
- [Configurable](#configuration)
|
28
29
|
|
29
30
|
## Next Features
|
@@ -294,6 +295,34 @@ And It's done, you can filter your index end-point:
|
|
294
295
|
|
295
296
|
- `GET /cars?color=blue or GET /cars?color=red&name=Ferrari`
|
296
297
|
|
298
|
+
### Pagination
|
299
|
+
|
300
|
+
For pagination, you need to create pagy initialializer file (pagy.rb) in the config directory of your project. Follow [pagy's example](https://ddnexus.github.io/pagy/quick-start/) for more information.
|
301
|
+
|
302
|
+
Next, you should add some lines on top of the previously created pagy file:
|
303
|
+
|
304
|
+
```ruby
|
305
|
+
# config/initializers/pagy.rb
|
306
|
+
require "pagy"
|
307
|
+
require "pagy/extras/headers"
|
308
|
+
```
|
309
|
+
|
310
|
+
At last, change the pagination variable on RestApiGenerator initializer to true;
|
311
|
+
|
312
|
+
```rb
|
313
|
+
# config/initializers/rest_api_generator.rb
|
314
|
+
config.pagination = true # default: false
|
315
|
+
```
|
316
|
+
|
317
|
+
Note, if the parent controller is changed, it is necessary to include Pagy::Backend in the new parent.
|
318
|
+
|
319
|
+
```rb
|
320
|
+
# new_parent_controller.rb
|
321
|
+
class NewParentController < ActionController::Base
|
322
|
+
include Pagy::Backend
|
323
|
+
end
|
324
|
+
```
|
325
|
+
|
297
326
|
## Configuration
|
298
327
|
|
299
328
|
You can override this gem configuration using the initializer or any other method from [anyway_config](https://github.com/palkan/anyway_config):
|
@@ -305,6 +334,7 @@ RestApiGenerator.configure do |config|
|
|
305
334
|
config.test_path = "custom_test_dir/requests" # default: spec/requests
|
306
335
|
config.docs_path = "custom_docs_dir/rswag" # default: spec/docs
|
307
336
|
config.parent_class = "ApplicationController" # default: RestApiGenerator::ResourceController
|
337
|
+
config.pagination = true # default: false
|
308
338
|
end
|
309
339
|
```
|
310
340
|
|
@@ -11,6 +11,10 @@ module RestApiGenerator
|
|
11
11
|
@resources = resources
|
12
12
|
@resources = @resources.filter_resource(params_for_filter) if resource_class.include?(Filterable)
|
13
13
|
@resources = @resources.order(ordering_params(params[:sort])) if params[:sort]
|
14
|
+
if pagination
|
15
|
+
@pagy, @resources = pagy(@resources)
|
16
|
+
pagy_headers_merge(@pagy)
|
17
|
+
end
|
14
18
|
render json: @resources, status: :ok
|
15
19
|
end
|
16
20
|
|
@@ -93,5 +97,9 @@ module RestApiGenerator
|
|
93
97
|
def record_id
|
94
98
|
params.permit(:id)[:id]
|
95
99
|
end
|
100
|
+
|
101
|
+
def pagination
|
102
|
+
RestApiGenerator.configuration.pagination
|
103
|
+
end
|
96
104
|
end
|
97
105
|
end
|
@@ -10,6 +10,10 @@ module RestApiGenerator
|
|
10
10
|
@resources = resource_class.all
|
11
11
|
@resources = @resources.filter_resource(params_for_filter) if resource_class.include?(Filterable)
|
12
12
|
@resources = @resources.order(ordering_params(params[:sort])) if params[:sort]
|
13
|
+
if pagination
|
14
|
+
@pagy, @resources = pagy(@resources)
|
15
|
+
pagy_headers_merge(@pagy)
|
16
|
+
end
|
13
17
|
render json: @resources, status: :ok
|
14
18
|
end
|
15
19
|
|
@@ -69,5 +73,9 @@ module RestApiGenerator
|
|
69
73
|
def record_id
|
70
74
|
params.permit(:id)[:id]
|
71
75
|
end
|
76
|
+
|
77
|
+
def pagination
|
78
|
+
RestApiGenerator.configuration.pagination
|
79
|
+
end
|
72
80
|
end
|
73
81
|
end
|
data/rest-api-generator.gemspec
CHANGED
@@ -38,6 +38,7 @@ Gem::Specification.new do |spec|
|
|
38
38
|
spec.metadata["rubygems_mfa_required"] = "true"
|
39
39
|
|
40
40
|
spec.add_dependency "anyway_config", ">= 2.0.0"
|
41
|
+
spec.add_dependency "pagy"
|
41
42
|
spec.add_dependency "rails", ">= 5.0"
|
42
43
|
|
43
44
|
spec.add_development_dependency "ammeter", "~> 1.1.5"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rest-api-generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- PedroAugustoRamalhoDuarte
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-04-
|
11
|
+
date: 2023-04-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: anyway_config
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 2.0.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: pagy
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rails
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|