trax_controller 0.1.2 → 0.1.3
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/lib/trax/controller/actions.rb +21 -0
- data/lib/trax/controller/collection.rb +2 -0
- data/lib/trax/controller/collection/nested_search_scopes.rb +29 -0
- data/lib/trax/controller/collection/sortable.rb +24 -0
- data/lib/trax_controller/version.rb +1 -1
- data/trax_controller.gemspec +2 -1
- metadata +22 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7d9526c744bfe5c3fa8be7f2106155174db9c8e
|
4
|
+
data.tar.gz: bb1732ba4d04abd00ffc47a71f7f558c8970ca5a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 70a24b9ba1ec688b01f5b9e66f0e90866c34b7000531ca8112bea2fab69965086e0c48a31d367ce1d48e360745ef2c3cbfbe7a3f22064eb6cd22e95dc4da027a
|
7
|
+
data.tar.gz: 2b601a8431f1e63349d59ee9dbf2bd8008f7d4562641a15a5ac1d1f6293d6a4beb1843a1c0b5e4d17dc30b8a703d8ec945870bfb5d327e09b25e812d8de72aca
|
@@ -88,6 +88,16 @@ module Trax
|
|
88
88
|
collection_root.singularize
|
89
89
|
end
|
90
90
|
|
91
|
+
#this overwrite allows a separate set of params to be used for create/update
|
92
|
+
#i.e. product_params_for_create, product_params_for_update
|
93
|
+
def resource_params_method_name
|
94
|
+
if respond_to?("#{resource_instance_name}_params_for_#{params[:action]}", true)
|
95
|
+
"#{resource_instance_name}_params_for_#{params[:action]}"
|
96
|
+
else
|
97
|
+
super
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
91
101
|
#will set the resource instance var to whatever you pass it, then render
|
92
102
|
def render_resource!(object, **options)
|
93
103
|
instance_variable_set(:"@#{self.class.resources_configuration[:self][:instance_name]}", object)
|
@@ -108,6 +118,17 @@ module Trax
|
|
108
118
|
render json: { meta: { errors: errors } }, status: status, serializer: nil
|
109
119
|
end
|
110
120
|
|
121
|
+
def render_resource_action_response(success_status: 200, failure_status: :method_not_allowed, **options)
|
122
|
+
respond_with_dual_blocks(resource, options) do |success, failure|
|
123
|
+
success.json do
|
124
|
+
render_resource(success_status, **options)
|
125
|
+
end
|
126
|
+
failure.json do
|
127
|
+
render_errors(failure_status, **options)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
111
132
|
def resource_error_messages(resource: _resource, **options)
|
112
133
|
return nil unless resource.errors.any?
|
113
134
|
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Trax
|
2
|
+
module Controller
|
3
|
+
module Collection
|
4
|
+
module NestedSearchScopes
|
5
|
+
extend ::ActiveSupport::Concern
|
6
|
+
|
7
|
+
module ClassMethods
|
8
|
+
def has_nested_scopes_for(scope_name, as:, model:, permitted_scopes: [], only: [:index, :search], type: :hash, **options)
|
9
|
+
has_scope(scope_name, as: as, only: only, type: type, **options) do |controller, scope, value|
|
10
|
+
scope_ivar_name = "@#{scope_name}_scope"
|
11
|
+
instance_variable_set(:"#{scope_ivar_name}", model)
|
12
|
+
|
13
|
+
value.each_pair do |k,v|
|
14
|
+
raise ::ActionController::ParameterMissing.new("Invalid search parameter #{k} #{v}") unless permitted_scopes.include?(k)
|
15
|
+
|
16
|
+
instance_variable_set(
|
17
|
+
:"#{scope_ivar_name}",
|
18
|
+
instance_variable_get(:"#{scope_ivar_name}").all.__send__(k, v)
|
19
|
+
)
|
20
|
+
end
|
21
|
+
|
22
|
+
scope.__send__(scope_name, instance_variable_get(:"#{scope_ivar_name}"))
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Trax
|
2
|
+
module Controller
|
3
|
+
module Collection
|
4
|
+
module Sortable
|
5
|
+
extend ::ActiveSupport::Concern
|
6
|
+
|
7
|
+
SORT_DIRECTIONS = [ "asc", "desc" ].freeze
|
8
|
+
|
9
|
+
module ClassMethods
|
10
|
+
def has_sort_scope(sort_scope_name, only: [:index, :search], type: :boolean, **options)
|
11
|
+
SORT_DIRECTIONS.each do |dir|
|
12
|
+
_sort_scope_name = :"#{sort_scope_name}_#{dir}"
|
13
|
+
has_scope(_sort_scope_name, only: only, type: type, **options)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def has_sort_scopes(*names, **options)
|
18
|
+
names.each{ |_name| has_sort_scope(_name, **options) }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/trax_controller.gemspec
CHANGED
@@ -35,7 +35,8 @@ Gem::Specification.new do |spec|
|
|
35
35
|
spec.add_development_dependency 'rspec-collection_matchers', '~> 1'
|
36
36
|
spec.add_development_dependency 'guard', '~> 2'
|
37
37
|
spec.add_development_dependency 'guard-bundler', '~> 2'
|
38
|
-
spec.add_development_dependency '
|
38
|
+
spec.add_development_dependency 'listen', '~> 3.0.3'
|
39
|
+
spec.add_development_dependency 'rb-fsevent', '~> 0.9.6'
|
39
40
|
spec.add_development_dependency 'terminal-notifier-guard'
|
40
41
|
spec.add_development_dependency 'pundit'
|
41
42
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trax_controller
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Ayre
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-10-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: trax_core
|
@@ -248,20 +248,34 @@ dependencies:
|
|
248
248
|
- - "~>"
|
249
249
|
- !ruby/object:Gem::Version
|
250
250
|
version: '2'
|
251
|
+
- !ruby/object:Gem::Dependency
|
252
|
+
name: listen
|
253
|
+
requirement: !ruby/object:Gem::Requirement
|
254
|
+
requirements:
|
255
|
+
- - "~>"
|
256
|
+
- !ruby/object:Gem::Version
|
257
|
+
version: 3.0.3
|
258
|
+
type: :development
|
259
|
+
prerelease: false
|
260
|
+
version_requirements: !ruby/object:Gem::Requirement
|
261
|
+
requirements:
|
262
|
+
- - "~>"
|
263
|
+
- !ruby/object:Gem::Version
|
264
|
+
version: 3.0.3
|
251
265
|
- !ruby/object:Gem::Dependency
|
252
266
|
name: rb-fsevent
|
253
267
|
requirement: !ruby/object:Gem::Requirement
|
254
268
|
requirements:
|
255
|
-
- - "
|
269
|
+
- - "~>"
|
256
270
|
- !ruby/object:Gem::Version
|
257
|
-
version:
|
271
|
+
version: 0.9.6
|
258
272
|
type: :development
|
259
273
|
prerelease: false
|
260
274
|
version_requirements: !ruby/object:Gem::Requirement
|
261
275
|
requirements:
|
262
|
-
- - "
|
276
|
+
- - "~>"
|
263
277
|
- !ruby/object:Gem::Version
|
264
|
-
version:
|
278
|
+
version: 0.9.6
|
265
279
|
- !ruby/object:Gem::Dependency
|
266
280
|
name: terminal-notifier-guard
|
267
281
|
requirement: !ruby/object:Gem::Requirement
|
@@ -327,9 +341,11 @@ files:
|
|
327
341
|
- lib/trax/controller/authorize.rb
|
328
342
|
- lib/trax/controller/collection.rb
|
329
343
|
- lib/trax/controller/collection/base.rb
|
344
|
+
- lib/trax/controller/collection/nested_search_scopes.rb
|
330
345
|
- lib/trax/controller/collection/pageable.rb
|
331
346
|
- lib/trax/controller/collection/response_meta.rb
|
332
347
|
- lib/trax/controller/collection/searchable.rb
|
348
|
+
- lib/trax/controller/collection/sortable.rb
|
333
349
|
- lib/trax/controller/config.rb
|
334
350
|
- lib/trax/controller/engine.rb
|
335
351
|
- lib/trax/controller/inherit_resources.rb
|