active_record_api-rest 1.0.18 → 1.0.19
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9f7d5bdb3dba9f5d4da9bc806bfe5d3bce9d09149b419c74648481b18840621f
|
4
|
+
data.tar.gz: '09f75577ff7bc0275d4faea7ae57f9a7103582263702429073fd1217fb8e3636'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cdfd4c5a8f7b668dd78b24803aa2de4bcb69be77a3d23cf97a80e26b82b5385f779500f8c4a210a57d11716a7cec6901553d1e3054b25b64bc31cda2118779bb
|
7
|
+
data.tar.gz: af8af57d6ca48745d71cc4add6c32a272bdda6e24b63b34da7c3adec42a2ccfba8b0cb2dde90df0fe330b1777a08c244eeda3d7f7ed7afd4fe8ab3f1b7a92aee
|
data/README.md
CHANGED
@@ -35,3 +35,10 @@ The gem is available as open source under the terms of the [MIT License](https:/
|
|
35
35
|
## Code of Conduct
|
36
36
|
|
37
37
|
Everyone interacting in the Swagger::Api project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/swagger-api/blob/master/CODE_OF_CONDUCT.md).
|
38
|
+
|
39
|
+
## Reverse proxy from nginx
|
40
|
+
|
41
|
+
add to nginx config this line
|
42
|
+
```
|
43
|
+
proxy_set_header X-Real-Path $request_uri;
|
44
|
+
```
|
@@ -8,9 +8,9 @@ module ActiveRecordApi
|
|
8
8
|
before_action :validate_params
|
9
9
|
|
10
10
|
def index
|
11
|
-
response.headers['x-total'] =
|
12
|
-
response.headers['x-link-next'] = next_url
|
13
|
-
render json: models, each_serializer: serializer
|
11
|
+
response.headers['x-total'] = @total
|
12
|
+
response.headers['x-link-next'] = next_url unless next_url.nil?
|
13
|
+
render json: models.limit(limit), each_serializer: serializer
|
14
14
|
end
|
15
15
|
|
16
16
|
def show
|
@@ -19,7 +19,7 @@ module ActiveRecordApi
|
|
19
19
|
|
20
20
|
def create
|
21
21
|
if model.save
|
22
|
-
|
22
|
+
redirect_to_model
|
23
23
|
else
|
24
24
|
render json: model.errors, status: :unprocessable_entity
|
25
25
|
end
|
@@ -27,7 +27,7 @@ module ActiveRecordApi
|
|
27
27
|
|
28
28
|
def update
|
29
29
|
if model.update(modifiable_params)
|
30
|
-
|
30
|
+
redirect_to_model
|
31
31
|
else
|
32
32
|
render json: model.errors, status: :unprocessable_entity
|
33
33
|
end
|
@@ -55,7 +55,8 @@ module ActiveRecordApi
|
|
55
55
|
|
56
56
|
def models
|
57
57
|
return @models unless @models.nil?
|
58
|
-
@models = authorized_models.where(queryable_params)
|
58
|
+
@models = authorized_models.where(queryable_params).order(pagination_param_name => pagination_param_direction)
|
59
|
+
@total = @models.count
|
59
60
|
return @models unless pagination_param_value.present?
|
60
61
|
@models = @models&.where("\"#{pagination_param_name}\" > ?", pagination_param_value)
|
61
62
|
end
|
@@ -76,6 +77,10 @@ module ActiveRecordApi
|
|
76
77
|
@pagination_param_name ||= :id
|
77
78
|
end
|
78
79
|
|
80
|
+
def pagination_param_direction
|
81
|
+
@pagination_param_direction ||= :asc # from params
|
82
|
+
end
|
83
|
+
|
79
84
|
def pagination_param_value
|
80
85
|
@pagination_param_value = params[pagination_param_name]
|
81
86
|
end
|
@@ -99,6 +104,8 @@ module ActiveRecordApi
|
|
99
104
|
action_name: action_name,
|
100
105
|
request: request,
|
101
106
|
models: models,
|
107
|
+
parameters: parameters,
|
108
|
+
total: @total,
|
102
109
|
pagination_param_name: pagination_param_name
|
103
110
|
)
|
104
111
|
end
|
@@ -7,19 +7,26 @@ module ActiveRecordApi
|
|
7
7
|
attribute :action_name
|
8
8
|
attribute :models
|
9
9
|
attribute :pagination_param_name
|
10
|
-
|
10
|
+
attribute :parameters
|
11
|
+
attribute :count
|
12
|
+
delegate :host_with_port, :path, :query_parameters, to: :request
|
13
|
+
delegate :limit, to: :parameters
|
11
14
|
|
12
15
|
def next_url
|
13
|
-
return if models.count
|
14
|
-
"#{current_url}?#{new_params}"
|
16
|
+
return if count == 0 || models.count <= limit
|
17
|
+
"#{current_url}?#{new_params.to_param}"
|
15
18
|
end
|
16
19
|
|
17
20
|
def new_params
|
18
|
-
|
21
|
+
query_parameters.dup.merge(pagination_param_name.to_s => models.limit(limit).last.send(pagination_param_name))
|
19
22
|
end
|
20
23
|
|
21
24
|
def current_url
|
22
|
-
"#{protocol}#{host_with_port}#{path}"
|
25
|
+
"#{protocol}#{host_with_port}#{micro_service_prefix}#{path}"
|
26
|
+
end
|
27
|
+
|
28
|
+
def micro_service_prefix
|
29
|
+
request.headers['HTTP_X_REAL_PATH'].split(path).first if request.headers['HTTP_X_REAL_PATH'].present?
|
23
30
|
end
|
24
31
|
|
25
32
|
def protocol
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_record_api-rest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Full Measure Education
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-04-
|
11
|
+
date: 2019-04-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|