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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2a0c3f89d4a18d3f4a2a657426d3cbbc171b2ebb
4
- data.tar.gz: a6c561ef139611f7428793d35e2020c04e47b5cb
3
+ metadata.gz: f7d9526c744bfe5c3fa8be7f2106155174db9c8e
4
+ data.tar.gz: bb1732ba4d04abd00ffc47a71f7f558c8970ca5a
5
5
  SHA512:
6
- metadata.gz: 8233b8ef9a6fb515e44e666bc42af3749c1c00790e2fc094c88b0d0d1f45fdf5d8cf5da6045855fdb45e3f46385556022d6297f039eba32c64d7fa9168b0df2d
7
- data.tar.gz: 40c8a347d7552ba34035bf9264222b699d2ff0ae96d42762d401a06c20643017d8e2d98f1b18cd057ad0008db853b5d0fd65d60cd0723482bc6e040fbbd33f6e
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
 
@@ -4,8 +4,10 @@ module Trax
4
4
  extend ::ActiveSupport::Autoload
5
5
 
6
6
  autoload :Base
7
+ autoload :NestedSearchScopes
7
8
  autoload :ResponseMeta
8
9
  autoload :Searchable
10
+ autoload :Sortable
9
11
  autoload :Pageable
10
12
  end
11
13
  end
@@ -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
@@ -1,3 +1,3 @@
1
1
  module TraxController
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
@@ -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 'rb-fsevent'
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.2
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-04-22 00:00:00.000000000 Z
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: '0'
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: '0'
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