trax_controller 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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