rest-api-generator 0.1.6 → 0.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/Gemfile +6 -0
- data/Gemfile.lock +134 -112
- data/README.md +69 -5
- data/app/controllers/rest_api_generator/application_controller.rb +1 -0
- data/app/controllers/rest_api_generator/child_resource_controller.rb +13 -4
- data/app/controllers/rest_api_generator/resource_controller.rb +13 -4
- data/lib/rest_api_generator/config.rb +2 -1
- data/lib/rest_api_generator/serializable.rb +18 -0
- data/lib/rest_api_generator/version.rb +1 -1
- data/lib/rest_api_generator.rb +1 -0
- data/rest-api-generator.gemspec +2 -0
- metadata +18 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b15131fc7fcedabae2098ef8f2e5e255683acda454d022304ea855ac9ce0a98a
|
|
4
|
+
data.tar.gz: 413967d92aca8c5c65075a8dfd5d0159be5c00b29a918b5bc3a39275217b3b6b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 439eb464b272818413629d6ca448c1e976603d97543600f521ff9386ba47e514c4a380b367c087a75a96cdeb5a501d707b365ca5d52d35a4cd3adf08fbddf9ec
|
|
7
|
+
data.tar.gz: 79ec324210477f42878cadebaf87566083c6db14251de20206a2cb2a98f2fd9bcbaba969170ecc3cfcee5dae89a51a37381aeaddb29fe30c7fd4d817d769f2de
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,93 +1,101 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
rest-api-generator (0.
|
|
4
|
+
rest-api-generator (0.2.0)
|
|
5
5
|
anyway_config (>= 2.0.0)
|
|
6
|
+
pagy
|
|
6
7
|
rails (>= 5.0)
|
|
7
8
|
|
|
8
9
|
GEM
|
|
9
10
|
remote: https://rubygems.org/
|
|
10
11
|
specs:
|
|
11
|
-
actioncable (7.0.4)
|
|
12
|
-
actionpack (= 7.0.4)
|
|
13
|
-
activesupport (= 7.0.4)
|
|
12
|
+
actioncable (7.0.4.3)
|
|
13
|
+
actionpack (= 7.0.4.3)
|
|
14
|
+
activesupport (= 7.0.4.3)
|
|
14
15
|
nio4r (~> 2.0)
|
|
15
16
|
websocket-driver (>= 0.6.1)
|
|
16
|
-
actionmailbox (7.0.4)
|
|
17
|
-
actionpack (= 7.0.4)
|
|
18
|
-
activejob (= 7.0.4)
|
|
19
|
-
activerecord (= 7.0.4)
|
|
20
|
-
activestorage (= 7.0.4)
|
|
21
|
-
activesupport (= 7.0.4)
|
|
17
|
+
actionmailbox (7.0.4.3)
|
|
18
|
+
actionpack (= 7.0.4.3)
|
|
19
|
+
activejob (= 7.0.4.3)
|
|
20
|
+
activerecord (= 7.0.4.3)
|
|
21
|
+
activestorage (= 7.0.4.3)
|
|
22
|
+
activesupport (= 7.0.4.3)
|
|
22
23
|
mail (>= 2.7.1)
|
|
23
24
|
net-imap
|
|
24
25
|
net-pop
|
|
25
26
|
net-smtp
|
|
26
|
-
actionmailer (7.0.4)
|
|
27
|
-
actionpack (= 7.0.4)
|
|
28
|
-
actionview (= 7.0.4)
|
|
29
|
-
activejob (= 7.0.4)
|
|
30
|
-
activesupport (= 7.0.4)
|
|
27
|
+
actionmailer (7.0.4.3)
|
|
28
|
+
actionpack (= 7.0.4.3)
|
|
29
|
+
actionview (= 7.0.4.3)
|
|
30
|
+
activejob (= 7.0.4.3)
|
|
31
|
+
activesupport (= 7.0.4.3)
|
|
31
32
|
mail (~> 2.5, >= 2.5.4)
|
|
32
33
|
net-imap
|
|
33
34
|
net-pop
|
|
34
35
|
net-smtp
|
|
35
36
|
rails-dom-testing (~> 2.0)
|
|
36
|
-
actionpack (7.0.4)
|
|
37
|
-
actionview (= 7.0.4)
|
|
38
|
-
activesupport (= 7.0.4)
|
|
37
|
+
actionpack (7.0.4.3)
|
|
38
|
+
actionview (= 7.0.4.3)
|
|
39
|
+
activesupport (= 7.0.4.3)
|
|
39
40
|
rack (~> 2.0, >= 2.2.0)
|
|
40
41
|
rack-test (>= 0.6.3)
|
|
41
42
|
rails-dom-testing (~> 2.0)
|
|
42
43
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
|
43
|
-
actiontext (7.0.4)
|
|
44
|
-
actionpack (= 7.0.4)
|
|
45
|
-
activerecord (= 7.0.4)
|
|
46
|
-
activestorage (= 7.0.4)
|
|
47
|
-
activesupport (= 7.0.4)
|
|
44
|
+
actiontext (7.0.4.3)
|
|
45
|
+
actionpack (= 7.0.4.3)
|
|
46
|
+
activerecord (= 7.0.4.3)
|
|
47
|
+
activestorage (= 7.0.4.3)
|
|
48
|
+
activesupport (= 7.0.4.3)
|
|
48
49
|
globalid (>= 0.6.0)
|
|
49
50
|
nokogiri (>= 1.8.5)
|
|
50
|
-
actionview (7.0.4)
|
|
51
|
-
activesupport (= 7.0.4)
|
|
51
|
+
actionview (7.0.4.3)
|
|
52
|
+
activesupport (= 7.0.4.3)
|
|
52
53
|
builder (~> 3.1)
|
|
53
54
|
erubi (~> 1.4)
|
|
54
55
|
rails-dom-testing (~> 2.0)
|
|
55
56
|
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
|
56
|
-
|
|
57
|
-
|
|
57
|
+
active_model_serializers (0.10.13)
|
|
58
|
+
actionpack (>= 4.1, < 7.1)
|
|
59
|
+
activemodel (>= 4.1, < 7.1)
|
|
60
|
+
case_transform (>= 0.2)
|
|
61
|
+
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
|
|
62
|
+
activejob (7.0.4.3)
|
|
63
|
+
activesupport (= 7.0.4.3)
|
|
58
64
|
globalid (>= 0.3.6)
|
|
59
|
-
activemodel (7.0.4)
|
|
60
|
-
activesupport (= 7.0.4)
|
|
61
|
-
activerecord (7.0.4)
|
|
62
|
-
activemodel (= 7.0.4)
|
|
63
|
-
activesupport (= 7.0.4)
|
|
64
|
-
activestorage (7.0.4)
|
|
65
|
-
actionpack (= 7.0.4)
|
|
66
|
-
activejob (= 7.0.4)
|
|
67
|
-
activerecord (= 7.0.4)
|
|
68
|
-
activesupport (= 7.0.4)
|
|
65
|
+
activemodel (7.0.4.3)
|
|
66
|
+
activesupport (= 7.0.4.3)
|
|
67
|
+
activerecord (7.0.4.3)
|
|
68
|
+
activemodel (= 7.0.4.3)
|
|
69
|
+
activesupport (= 7.0.4.3)
|
|
70
|
+
activestorage (7.0.4.3)
|
|
71
|
+
actionpack (= 7.0.4.3)
|
|
72
|
+
activejob (= 7.0.4.3)
|
|
73
|
+
activerecord (= 7.0.4.3)
|
|
74
|
+
activesupport (= 7.0.4.3)
|
|
69
75
|
marcel (~> 1.0)
|
|
70
76
|
mini_mime (>= 1.1.0)
|
|
71
|
-
activesupport (7.0.4)
|
|
77
|
+
activesupport (7.0.4.3)
|
|
72
78
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
73
79
|
i18n (>= 1.6, < 2)
|
|
74
80
|
minitest (>= 5.1)
|
|
75
81
|
tzinfo (~> 2.0)
|
|
76
|
-
addressable (2.8.
|
|
82
|
+
addressable (2.8.4)
|
|
77
83
|
public_suffix (>= 2.0.2, < 6.0)
|
|
78
84
|
ammeter (1.1.5)
|
|
79
85
|
activesupport (>= 3.0)
|
|
80
86
|
railties (>= 3.0)
|
|
81
87
|
rspec-rails (>= 2.2)
|
|
82
|
-
anyway_config (2.4.
|
|
88
|
+
anyway_config (2.4.1)
|
|
83
89
|
ruby-next-core (>= 0.14.0)
|
|
84
90
|
ast (2.4.2)
|
|
85
91
|
builder (3.2.4)
|
|
86
|
-
|
|
92
|
+
case_transform (0.2)
|
|
93
|
+
activesupport
|
|
94
|
+
concurrent-ruby (1.2.2)
|
|
87
95
|
crass (1.0.6)
|
|
88
|
-
database_cleaner (2.0.
|
|
89
|
-
database_cleaner-active_record (
|
|
90
|
-
database_cleaner-active_record (2.0
|
|
96
|
+
database_cleaner (2.0.2)
|
|
97
|
+
database_cleaner-active_record (>= 2, < 3)
|
|
98
|
+
database_cleaner-active_record (2.1.0)
|
|
91
99
|
activerecord (>= 5.a)
|
|
92
100
|
database_cleaner-core (~> 2.0.0)
|
|
93
101
|
database_cleaner-core (2.0.1)
|
|
@@ -96,14 +104,15 @@ GEM
|
|
|
96
104
|
erubi (1.12.0)
|
|
97
105
|
globalid (1.1.0)
|
|
98
106
|
activesupport (>= 5.0)
|
|
99
|
-
i18n (1.
|
|
107
|
+
i18n (1.13.0)
|
|
100
108
|
concurrent-ruby (~> 1.0)
|
|
101
109
|
json (2.6.3)
|
|
102
110
|
json-schema (3.0.0)
|
|
103
111
|
addressable (>= 2.8)
|
|
104
|
-
|
|
112
|
+
jsonapi-renderer (0.2.2)
|
|
113
|
+
loofah (2.21.2)
|
|
105
114
|
crass (~> 1.0.2)
|
|
106
|
-
nokogiri (>= 1.
|
|
115
|
+
nokogiri (>= 1.12.0)
|
|
107
116
|
mail (2.8.1)
|
|
108
117
|
mini_mime (>= 0.1.1)
|
|
109
118
|
net-imap
|
|
@@ -112,8 +121,8 @@ GEM
|
|
|
112
121
|
marcel (1.0.2)
|
|
113
122
|
method_source (1.0.0)
|
|
114
123
|
mini_mime (1.1.2)
|
|
115
|
-
mini_portile2 (2.8.
|
|
116
|
-
minitest (5.
|
|
124
|
+
mini_portile2 (2.8.2)
|
|
125
|
+
minitest (5.18.0)
|
|
117
126
|
net-imap (0.3.4)
|
|
118
127
|
date
|
|
119
128
|
net-protocol
|
|
@@ -124,135 +133,148 @@ GEM
|
|
|
124
133
|
net-smtp (0.3.3)
|
|
125
134
|
net-protocol
|
|
126
135
|
nio4r (2.5.9)
|
|
127
|
-
nokogiri (1.
|
|
136
|
+
nokogiri (1.14.4)
|
|
128
137
|
mini_portile2 (~> 2.8.0)
|
|
129
138
|
racc (~> 1.4)
|
|
130
|
-
nokogiri (1.
|
|
139
|
+
nokogiri (1.14.4-x86_64-linux)
|
|
131
140
|
racc (~> 1.4)
|
|
132
|
-
|
|
133
|
-
|
|
141
|
+
oj (3.14.3)
|
|
142
|
+
pagy (6.0.4)
|
|
143
|
+
panko_serializer (0.7.9)
|
|
144
|
+
activesupport
|
|
145
|
+
oj (> 3.11.0, < 4.0.0)
|
|
146
|
+
parallel (1.23.0)
|
|
147
|
+
parser (3.2.2.1)
|
|
134
148
|
ast (~> 2.4.1)
|
|
135
149
|
public_suffix (5.0.1)
|
|
136
150
|
racc (1.6.2)
|
|
137
|
-
rack (2.2.
|
|
138
|
-
rack-test (2.0
|
|
151
|
+
rack (2.2.7)
|
|
152
|
+
rack-test (2.1.0)
|
|
139
153
|
rack (>= 1.3)
|
|
140
|
-
rails (7.0.4)
|
|
141
|
-
actioncable (= 7.0.4)
|
|
142
|
-
actionmailbox (= 7.0.4)
|
|
143
|
-
actionmailer (= 7.0.4)
|
|
144
|
-
actionpack (= 7.0.4)
|
|
145
|
-
actiontext (= 7.0.4)
|
|
146
|
-
actionview (= 7.0.4)
|
|
147
|
-
activejob (= 7.0.4)
|
|
148
|
-
activemodel (= 7.0.4)
|
|
149
|
-
activerecord (= 7.0.4)
|
|
150
|
-
activestorage (= 7.0.4)
|
|
151
|
-
activesupport (= 7.0.4)
|
|
154
|
+
rails (7.0.4.3)
|
|
155
|
+
actioncable (= 7.0.4.3)
|
|
156
|
+
actionmailbox (= 7.0.4.3)
|
|
157
|
+
actionmailer (= 7.0.4.3)
|
|
158
|
+
actionpack (= 7.0.4.3)
|
|
159
|
+
actiontext (= 7.0.4.3)
|
|
160
|
+
actionview (= 7.0.4.3)
|
|
161
|
+
activejob (= 7.0.4.3)
|
|
162
|
+
activemodel (= 7.0.4.3)
|
|
163
|
+
activerecord (= 7.0.4.3)
|
|
164
|
+
activestorage (= 7.0.4.3)
|
|
165
|
+
activesupport (= 7.0.4.3)
|
|
152
166
|
bundler (>= 1.15.0)
|
|
153
|
-
railties (= 7.0.4)
|
|
167
|
+
railties (= 7.0.4.3)
|
|
154
168
|
rails-dom-testing (2.0.3)
|
|
155
169
|
activesupport (>= 4.2.0)
|
|
156
170
|
nokogiri (>= 1.6)
|
|
157
|
-
rails-html-sanitizer (1.
|
|
171
|
+
rails-html-sanitizer (1.5.0)
|
|
158
172
|
loofah (~> 2.19, >= 2.19.1)
|
|
159
|
-
railties (7.0.4)
|
|
160
|
-
actionpack (= 7.0.4)
|
|
161
|
-
activesupport (= 7.0.4)
|
|
173
|
+
railties (7.0.4.3)
|
|
174
|
+
actionpack (= 7.0.4.3)
|
|
175
|
+
activesupport (= 7.0.4.3)
|
|
162
176
|
method_source
|
|
163
177
|
rake (>= 12.2)
|
|
164
178
|
thor (~> 1.0)
|
|
165
179
|
zeitwerk (~> 2.5)
|
|
166
180
|
rainbow (3.1.1)
|
|
167
181
|
rake (13.0.6)
|
|
168
|
-
regexp_parser (2.
|
|
182
|
+
regexp_parser (2.8.0)
|
|
169
183
|
rexml (3.2.5)
|
|
170
184
|
rspec (3.12.0)
|
|
171
185
|
rspec-core (~> 3.12.0)
|
|
172
186
|
rspec-expectations (~> 3.12.0)
|
|
173
187
|
rspec-mocks (~> 3.12.0)
|
|
174
|
-
rspec-core (3.12.
|
|
188
|
+
rspec-core (3.12.2)
|
|
175
189
|
rspec-support (~> 3.12.0)
|
|
176
|
-
rspec-expectations (3.12.
|
|
190
|
+
rspec-expectations (3.12.3)
|
|
177
191
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
178
192
|
rspec-support (~> 3.12.0)
|
|
179
|
-
rspec-mocks (3.12.
|
|
193
|
+
rspec-mocks (3.12.5)
|
|
180
194
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
181
195
|
rspec-support (~> 3.12.0)
|
|
182
|
-
rspec-rails (6.0.
|
|
196
|
+
rspec-rails (6.0.2)
|
|
183
197
|
actionpack (>= 6.1)
|
|
184
198
|
activesupport (>= 6.1)
|
|
185
199
|
railties (>= 6.1)
|
|
186
|
-
rspec-core (~> 3.
|
|
187
|
-
rspec-expectations (~> 3.
|
|
188
|
-
rspec-mocks (~> 3.
|
|
189
|
-
rspec-support (~> 3.
|
|
200
|
+
rspec-core (~> 3.12)
|
|
201
|
+
rspec-expectations (~> 3.12)
|
|
202
|
+
rspec-mocks (~> 3.12)
|
|
203
|
+
rspec-support (~> 3.12)
|
|
190
204
|
rspec-support (3.12.0)
|
|
191
|
-
rswag (2.
|
|
192
|
-
rswag-api (= 2.
|
|
193
|
-
rswag-specs (= 2.
|
|
194
|
-
rswag-ui (= 2.
|
|
195
|
-
rswag-api (2.
|
|
205
|
+
rswag (2.9.0)
|
|
206
|
+
rswag-api (= 2.9.0)
|
|
207
|
+
rswag-specs (= 2.9.0)
|
|
208
|
+
rswag-ui (= 2.9.0)
|
|
209
|
+
rswag-api (2.9.0)
|
|
196
210
|
railties (>= 3.1, < 7.1)
|
|
197
|
-
rswag-specs (2.
|
|
211
|
+
rswag-specs (2.9.0)
|
|
198
212
|
activesupport (>= 3.1, < 7.1)
|
|
199
213
|
json-schema (>= 2.2, < 4.0)
|
|
200
214
|
railties (>= 3.1, < 7.1)
|
|
201
215
|
rspec-core (>= 2.14)
|
|
202
|
-
rswag-ui (2.
|
|
216
|
+
rswag-ui (2.9.0)
|
|
203
217
|
actionpack (>= 3.1, < 7.1)
|
|
204
218
|
railties (>= 3.1, < 7.1)
|
|
205
|
-
rubocop (1.
|
|
219
|
+
rubocop (1.51.0)
|
|
206
220
|
json (~> 2.3)
|
|
207
221
|
parallel (~> 1.10)
|
|
208
|
-
parser (>= 3.
|
|
222
|
+
parser (>= 3.2.0.0)
|
|
209
223
|
rainbow (>= 2.2.2, < 4.0)
|
|
210
224
|
regexp_parser (>= 1.8, < 3.0)
|
|
211
225
|
rexml (>= 3.2.5, < 4.0)
|
|
212
|
-
rubocop-ast (>= 1.
|
|
226
|
+
rubocop-ast (>= 1.28.0, < 2.0)
|
|
213
227
|
ruby-progressbar (~> 1.7)
|
|
214
|
-
unicode-display_width (>=
|
|
215
|
-
rubocop-ast (1.
|
|
216
|
-
parser (>= 3.
|
|
217
|
-
rubocop-
|
|
228
|
+
unicode-display_width (>= 2.4.0, < 3.0)
|
|
229
|
+
rubocop-ast (1.28.1)
|
|
230
|
+
parser (>= 3.2.1.0)
|
|
231
|
+
rubocop-capybara (2.18.0)
|
|
232
|
+
rubocop (~> 1.41)
|
|
233
|
+
rubocop-factory_bot (2.22.0)
|
|
234
|
+
rubocop (~> 1.33)
|
|
235
|
+
rubocop-performance (1.17.1)
|
|
218
236
|
rubocop (>= 1.7.0, < 2.0)
|
|
219
237
|
rubocop-ast (>= 0.4.0)
|
|
220
|
-
rubocop-rails (2.
|
|
238
|
+
rubocop-rails (2.19.1)
|
|
221
239
|
activesupport (>= 4.2.0)
|
|
222
240
|
rack (>= 1.1)
|
|
223
241
|
rubocop (>= 1.33.0, < 2.0)
|
|
224
|
-
rubocop-rspec (2.
|
|
242
|
+
rubocop-rspec (2.22.0)
|
|
225
243
|
rubocop (~> 1.33)
|
|
226
|
-
|
|
227
|
-
rubocop (~>
|
|
244
|
+
rubocop-capybara (~> 2.17)
|
|
245
|
+
rubocop-factory_bot (~> 2.22)
|
|
246
|
+
rubocop-shopify (2.13.0)
|
|
247
|
+
rubocop (~> 1.50)
|
|
228
248
|
ruby-next-core (0.15.3)
|
|
229
|
-
ruby-progressbar (1.
|
|
230
|
-
sqlite3 (1.
|
|
249
|
+
ruby-progressbar (1.13.0)
|
|
250
|
+
sqlite3 (1.6.2)
|
|
231
251
|
mini_portile2 (~> 2.8.0)
|
|
232
|
-
sqlite3 (1.
|
|
233
|
-
switchcop (0.1.
|
|
234
|
-
rubocop (~> 1.
|
|
235
|
-
rubocop-performance (~> 1.
|
|
236
|
-
rubocop-rails (~> 2.
|
|
237
|
-
rubocop-rspec (~> 2.
|
|
238
|
-
rubocop-shopify (~> 2.
|
|
239
|
-
thor (1.2.
|
|
252
|
+
sqlite3 (1.6.2-x86_64-linux)
|
|
253
|
+
switchcop (0.1.3)
|
|
254
|
+
rubocop (~> 1.48)
|
|
255
|
+
rubocop-performance (~> 1.16)
|
|
256
|
+
rubocop-rails (~> 2.18)
|
|
257
|
+
rubocop-rspec (~> 2.19)
|
|
258
|
+
rubocop-shopify (~> 2.12)
|
|
259
|
+
thor (1.2.2)
|
|
240
260
|
timeout (0.3.2)
|
|
241
|
-
tzinfo (2.0.
|
|
261
|
+
tzinfo (2.0.6)
|
|
242
262
|
concurrent-ruby (~> 1.0)
|
|
243
|
-
unicode-display_width (2.
|
|
263
|
+
unicode-display_width (2.4.2)
|
|
244
264
|
websocket-driver (0.7.5)
|
|
245
265
|
websocket-extensions (>= 0.1.0)
|
|
246
266
|
websocket-extensions (0.1.5)
|
|
247
|
-
zeitwerk (2.6.
|
|
267
|
+
zeitwerk (2.6.8)
|
|
248
268
|
|
|
249
269
|
PLATFORMS
|
|
250
270
|
ruby
|
|
251
271
|
x86_64-linux
|
|
252
272
|
|
|
253
273
|
DEPENDENCIES
|
|
274
|
+
active_model_serializers (~> 0.10.0)
|
|
254
275
|
ammeter (~> 1.1.5)
|
|
255
276
|
database_cleaner
|
|
277
|
+
panko_serializer
|
|
256
278
|
rake (~> 13.0)
|
|
257
279
|
rest-api-generator!
|
|
258
280
|
rspec (~> 3.0)
|
data/README.md
CHANGED
|
@@ -24,13 +24,12 @@ 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)
|
|
28
|
+
- [Resource serialization](#serialization)
|
|
27
29
|
- [Configurable](#configuration)
|
|
28
30
|
|
|
29
31
|
## Next Features
|
|
30
32
|
|
|
31
|
-
- Serialization https://github.com/SwitchDreams/rest-api-generator/issues/14
|
|
32
|
-
https://github.com/SwitchDreams/rest-api-generator/issues/11
|
|
33
|
-
- Pagination https://github.com/SwitchDreams/rest-api-generator/issues/15
|
|
34
33
|
- Integration with AVO
|
|
35
34
|
- Select fields
|
|
36
35
|
- User auth module
|
|
@@ -249,7 +248,6 @@ rails g rest_api_generator:spec:rswag Car name:string color:string
|
|
|
249
248
|
By default, the plain rspec and rswag specs are going to be generated in the _spec/requests_ and _spec/docs_
|
|
250
249
|
directories, respectively. You can override using the (config options)[#configuration]]. :
|
|
251
250
|
|
|
252
|
-
|
|
253
251
|
### Resource Features
|
|
254
252
|
|
|
255
253
|
#### Modular Error Handler
|
|
@@ -294,9 +292,74 @@ And It's done, you can filter your index end-point:
|
|
|
294
292
|
|
|
295
293
|
- `GET /cars?color=blue or GET /cars?color=red&name=Ferrari`
|
|
296
294
|
|
|
295
|
+
### Pagination
|
|
296
|
+
|
|
297
|
+
For pagination, you need to create pagy initialializer file (pagy.rb) in the config directory of your project.
|
|
298
|
+
Follow [pagy's example](https://ddnexus.github.io/pagy/quick-start/) for more information.
|
|
299
|
+
|
|
300
|
+
Next, you should add some lines on top of the previously created pagy file:
|
|
301
|
+
|
|
302
|
+
```ruby
|
|
303
|
+
# config/initializers/pagy.rb
|
|
304
|
+
require "pagy"
|
|
305
|
+
require "pagy/extras/headers"
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
At last, change the pagination variable on RestApiGenerator initializer to true;
|
|
309
|
+
|
|
310
|
+
```rb
|
|
311
|
+
# config/initializers/rest_api_generator.rb
|
|
312
|
+
config.pagination = true # default: false
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
Note, if the parent controller is changed, it is necessary to include Pagy::Backend in the new parent.
|
|
316
|
+
|
|
317
|
+
```rb
|
|
318
|
+
# new_parent_controller.rb
|
|
319
|
+
class NewParentController < ActionController::Base
|
|
320
|
+
include Pagy::Backend
|
|
321
|
+
end
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
### Serialization
|
|
325
|
+
|
|
326
|
+
If you are working with [ams](https://github.com/rails-api/active_model_serializers), the serializer will work without
|
|
327
|
+
any extra configuration.
|
|
328
|
+
But if you need to customize you can override the serializer method in the controller:
|
|
329
|
+
|
|
330
|
+
```ruby
|
|
331
|
+
# Example with panko serializer: https://github.com/panko-serializer/panko_serializer
|
|
332
|
+
class CarsController < RestApiGenerator::ResourceController
|
|
333
|
+
|
|
334
|
+
# serializer used in show, create, update.
|
|
335
|
+
def serializer(resource)
|
|
336
|
+
Panko::CarSerializer.new.serialize_to_json(resource)
|
|
337
|
+
end
|
|
338
|
+
|
|
339
|
+
# serializer used in index.
|
|
340
|
+
def index_serializer(resources)
|
|
341
|
+
Panko::ArraySerializer.new(resources, each_serializer: Panko::CarSerializer).to_json
|
|
342
|
+
end
|
|
343
|
+
end
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
```ruby
|
|
347
|
+
# Example with ams
|
|
348
|
+
class CarsController < RestApiGenerator::ResourceController
|
|
349
|
+
def serializer(resource)
|
|
350
|
+
ActiveModelSerializers::SerializableResource.new(resource, each_serializer: Ams::CarSerializer).to_json
|
|
351
|
+
end
|
|
352
|
+
end
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
The gem is tested with [panko serializer](https://github.com/panko-serializer/panko_serializer)
|
|
356
|
+
and [ams](https://github.com/rails-api/active_model_serializers). But should works with any serializer, feel free to add
|
|
357
|
+
tests for your favorite serializer.
|
|
358
|
+
|
|
297
359
|
## Configuration
|
|
298
360
|
|
|
299
|
-
You can override this gem configuration using the initializer or any other method
|
|
361
|
+
You can override this gem configuration using the initializer or any other method
|
|
362
|
+
from [anyway_config](https://github.com/palkan/anyway_config):
|
|
300
363
|
|
|
301
364
|
```rb
|
|
302
365
|
# config/initializers/rest_api_generator.rb
|
|
@@ -305,6 +368,7 @@ RestApiGenerator.configure do |config|
|
|
|
305
368
|
config.test_path = "custom_test_dir/requests" # default: spec/requests
|
|
306
369
|
config.docs_path = "custom_docs_dir/rswag" # default: spec/docs
|
|
307
370
|
config.parent_class = "ApplicationController" # default: RestApiGenerator::ResourceController
|
|
371
|
+
config.pagination = true # default: false
|
|
308
372
|
end
|
|
309
373
|
```
|
|
310
374
|
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
module RestApiGenerator
|
|
4
4
|
class ChildResourceController < RestApiGenerator.configuration.parent_controller.constantize
|
|
5
5
|
include Orderable
|
|
6
|
+
include Serializable
|
|
6
7
|
|
|
7
8
|
before_action :set_parent_resource
|
|
8
9
|
before_action :set_resource, only: [:show, :update, :destroy]
|
|
@@ -11,21 +12,25 @@ module RestApiGenerator
|
|
|
11
12
|
@resources = resources
|
|
12
13
|
@resources = @resources.filter_resource(params_for_filter) if resource_class.include?(Filterable)
|
|
13
14
|
@resources = @resources.order(ordering_params(params[:sort])) if params[:sort]
|
|
14
|
-
|
|
15
|
+
if pagination
|
|
16
|
+
@pagy, @resources = pagy(@resources)
|
|
17
|
+
pagy_headers_merge(@pagy)
|
|
18
|
+
end
|
|
19
|
+
render json: index_serializer(@resources), status: :ok
|
|
15
20
|
end
|
|
16
21
|
|
|
17
22
|
def show
|
|
18
|
-
render json: @resource, status: :ok
|
|
23
|
+
render json: serializer(@resource), status: :ok
|
|
19
24
|
end
|
|
20
25
|
|
|
21
26
|
def create
|
|
22
27
|
@resource = resources.create!(resource_created_params)
|
|
23
|
-
render json: @resource, status: :created
|
|
28
|
+
render json: serializer(@resource), status: :created
|
|
24
29
|
end
|
|
25
30
|
|
|
26
31
|
def update
|
|
27
32
|
@resource.update!(resource_updated_params)
|
|
28
|
-
render json: @resource, status: :ok
|
|
33
|
+
render json: serializer(@resource), status: :ok
|
|
29
34
|
end
|
|
30
35
|
|
|
31
36
|
def destroy
|
|
@@ -93,5 +98,9 @@ module RestApiGenerator
|
|
|
93
98
|
def record_id
|
|
94
99
|
params.permit(:id)[:id]
|
|
95
100
|
end
|
|
101
|
+
|
|
102
|
+
def pagination
|
|
103
|
+
RestApiGenerator.configuration.pagination
|
|
104
|
+
end
|
|
96
105
|
end
|
|
97
106
|
end
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
module RestApiGenerator
|
|
4
4
|
class ResourceController < RestApiGenerator.configuration.parent_controller.constantize
|
|
5
5
|
include Orderable
|
|
6
|
+
include Serializable
|
|
6
7
|
|
|
7
8
|
before_action :set_resource, only: [:show, :update, :destroy]
|
|
8
9
|
|
|
@@ -10,21 +11,25 @@ module RestApiGenerator
|
|
|
10
11
|
@resources = resource_class.all
|
|
11
12
|
@resources = @resources.filter_resource(params_for_filter) if resource_class.include?(Filterable)
|
|
12
13
|
@resources = @resources.order(ordering_params(params[:sort])) if params[:sort]
|
|
13
|
-
|
|
14
|
+
if pagination
|
|
15
|
+
@pagy, @resources = pagy(@resources)
|
|
16
|
+
pagy_headers_merge(@pagy)
|
|
17
|
+
end
|
|
18
|
+
render json: index_serializer(@resources), status: :ok
|
|
14
19
|
end
|
|
15
20
|
|
|
16
21
|
def show
|
|
17
|
-
render json: @resource, status: :ok
|
|
22
|
+
render json: serializer(@resource), status: :ok
|
|
18
23
|
end
|
|
19
24
|
|
|
20
25
|
def create
|
|
21
26
|
@resource = resource_class.create!(resource_created_params)
|
|
22
|
-
render json: @resource, status: :created
|
|
27
|
+
render json: serializer(@resource), status: :created
|
|
23
28
|
end
|
|
24
29
|
|
|
25
30
|
def update
|
|
26
31
|
@resource.update!(resource_updated_params)
|
|
27
|
-
render json: @resource, status: :ok
|
|
32
|
+
render json: serializer(@resource), status: :ok
|
|
28
33
|
end
|
|
29
34
|
|
|
30
35
|
def destroy
|
|
@@ -69,5 +74,9 @@ module RestApiGenerator
|
|
|
69
74
|
def record_id
|
|
70
75
|
params.permit(:id)[:id]
|
|
71
76
|
end
|
|
77
|
+
|
|
78
|
+
def pagination
|
|
79
|
+
RestApiGenerator.configuration.pagination
|
|
80
|
+
end
|
|
72
81
|
end
|
|
73
82
|
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "active_support"
|
|
4
|
+
require "active_support/concern"
|
|
5
|
+
|
|
6
|
+
module RestApiGenerator
|
|
7
|
+
module Serializable
|
|
8
|
+
extend ActiveSupport::Concern
|
|
9
|
+
|
|
10
|
+
def serializer(resource)
|
|
11
|
+
resource
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def index_serializer(resources)
|
|
15
|
+
serializer(resources)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
data/lib/rest_api_generator.rb
CHANGED
|
@@ -8,6 +8,7 @@ require_relative "rest_api_generator/custom_error"
|
|
|
8
8
|
require_relative "rest_api_generator/helpers/render"
|
|
9
9
|
require_relative "rest_api_generator/filterable"
|
|
10
10
|
require_relative "rest_api_generator/orderable"
|
|
11
|
+
require_relative "rest_api_generator/serializable"
|
|
11
12
|
|
|
12
13
|
module RestApiGenerator
|
|
13
14
|
class Error < StandardError; end
|
data/rest-api-generator.gemspec
CHANGED
|
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
|
|
|
21
21
|
spec.metadata["homepage_uri"] = spec.homepage
|
|
22
22
|
spec.metadata["source_code_uri"] = "https://github.com/SwitchDreams/rest-api-generator"
|
|
23
23
|
spec.metadata["changelog_uri"] = "https://github.com/SwitchDreams/rest-api-generator"
|
|
24
|
+
spec.metadata["github_repo"] = "https://github.com/SwitchDreams/rest-api-generator"
|
|
24
25
|
|
|
25
26
|
spec.files = Dir["{bin,sig,lib,public,app}/**/*",
|
|
26
27
|
"MIT-LICENSE",
|
|
@@ -38,6 +39,7 @@ Gem::Specification.new do |spec|
|
|
|
38
39
|
spec.metadata["rubygems_mfa_required"] = "true"
|
|
39
40
|
|
|
40
41
|
spec.add_dependency "anyway_config", ">= 2.0.0"
|
|
42
|
+
spec.add_dependency "pagy"
|
|
41
43
|
spec.add_dependency "rails", ">= 5.0"
|
|
42
44
|
|
|
43
45
|
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.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- PedroAugustoRamalhoDuarte
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2023-
|
|
11
|
+
date: 2023-05-15 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
|
|
@@ -147,6 +161,7 @@ files:
|
|
|
147
161
|
- lib/rest_api_generator/helpers/render.rb
|
|
148
162
|
- lib/rest_api_generator/orderable.rb
|
|
149
163
|
- lib/rest_api_generator/rails.rb
|
|
164
|
+
- lib/rest_api_generator/serializable.rb
|
|
150
165
|
- lib/rest_api_generator/version.rb
|
|
151
166
|
- rest-api-generator.gemspec
|
|
152
167
|
- sig/rest_api_generator.rbs
|
|
@@ -158,6 +173,7 @@ metadata:
|
|
|
158
173
|
homepage_uri: https://github.com/SwitchDreams/rest-api-generator
|
|
159
174
|
source_code_uri: https://github.com/SwitchDreams/rest-api-generator
|
|
160
175
|
changelog_uri: https://github.com/SwitchDreams/rest-api-generator
|
|
176
|
+
github_repo: https://github.com/SwitchDreams/rest-api-generator
|
|
161
177
|
rubygems_mfa_required: 'true'
|
|
162
178
|
post_install_message:
|
|
163
179
|
rdoc_options: []
|