Module: JsonapiCompliable::Base
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/jsonapi_compliable/base.rb
Defined Under Namespace
Modules: ClassMethods
Constant Summary collapse
- MAX_PAGE_SIZE =
1_000
Instance Method Summary collapse
- #_persist ⇒ Object
-
#default_jsonapi_render_options ⇒ Object
render_jsonapi(foo) equivalent to render jsonapi: foo, default_jsonapi_render_options.
- #deserialized_params ⇒ Object
- #force_includes? ⇒ Boolean
- #jsonapi_create ⇒ Object
- #jsonapi_scope(scope, opts = {}) ⇒ Object
- #jsonapi_update ⇒ Object
- #perform_render_jsonapi(opts) ⇒ Object
- #query ⇒ Object
- #query_hash ⇒ Object
- #render_jsonapi(scope, opts = {}) ⇒ Object
- #resource ⇒ Object
- #resource! ⇒ Object
- #wrap_context ⇒ Object
Instance Method Details
#_persist ⇒ Object
68 69 70 71 72 73 74 75 76 77 |
# File 'lib/jsonapi_compliable/base.rb', line 68 def _persist validation_response = nil resource.transaction do object = yield validation_response = Util::ValidationResponse.new \ object, deserialized_params raise Errors::ValidationError unless validation_response.to_a[1] end validation_response end |
#default_jsonapi_render_options ⇒ Object
render_jsonapi(foo) equivalent to render jsonapi: foo, default_jsonapi_render_options
94 95 96 97 |
# File 'lib/jsonapi_compliable/base.rb', line 94 def {}.tap do || end end |
#deserialized_params ⇒ Object
46 47 48 |
# File 'lib/jsonapi_compliable/base.rb', line 46 def deserialized_params @deserialized_params ||= JsonapiCompliable::Deserializer.new(params, request.env) end |
#force_includes? ⇒ Boolean
99 100 101 |
# File 'lib/jsonapi_compliable/base.rb', line 99 def force_includes? not params[:data].nil? end |
#jsonapi_create ⇒ Object
50 51 52 53 54 55 56 57 |
# File 'lib/jsonapi_compliable/base.rb', line 50 def jsonapi_create _persist do resource.persist_with_relationships \ deserialized_params., deserialized_params.attributes, deserialized_params.relationships end end |
#jsonapi_scope(scope, opts = {}) ⇒ Object
42 43 44 |
# File 'lib/jsonapi_compliable/base.rb', line 42 def jsonapi_scope(scope, opts = {}) resource.build_scope(scope, query, opts) end |
#jsonapi_update ⇒ Object
59 60 61 62 63 64 65 66 |
# File 'lib/jsonapi_compliable/base.rb', line 59 def jsonapi_update _persist do resource.persist_with_relationships \ deserialized_params., deserialized_params.attributes, deserialized_params.relationships end end |
#perform_render_jsonapi(opts) ⇒ Object
79 80 81 |
# File 'lib/jsonapi_compliable/base.rb', line 79 def perform_render_jsonapi(opts) JSONAPI::Serializable::Renderer.render(opts.delete(:jsonapi), opts) end |
#query ⇒ Object
26 27 28 |
# File 'lib/jsonapi_compliable/base.rb', line 26 def query @query ||= Query.new(resource, params) end |
#query_hash ⇒ Object
30 31 32 |
# File 'lib/jsonapi_compliable/base.rb', line 30 def query_hash @query_hash ||= query.to_hash[resource.type] end |
#render_jsonapi(scope, opts = {}) ⇒ Object
83 84 85 86 87 88 89 90 |
# File 'lib/jsonapi_compliable/base.rb', line 83 def render_jsonapi(scope, opts = {}) scope = jsonapi_scope(scope) unless opts[:scope] == false || scope.is_a?(JsonapiCompliable::Scope) opts = .merge(opts) opts = Util::RenderOptions.generate(scope, query_hash, opts) opts[:expose][:context] = self opts[:include] = deserialized_params.include_directive if force_includes? perform_render_jsonapi(opts) end |
#resource ⇒ Object
18 19 20 |
# File 'lib/jsonapi_compliable/base.rb', line 18 def resource @resource ||= self.class._jsonapi_compliable.new end |
#resource! ⇒ Object
22 23 24 |
# File 'lib/jsonapi_compliable/base.rb', line 22 def resource! @resource = self.class._jsonapi_compliable.new end |
#wrap_context ⇒ Object
34 35 36 37 38 39 40 |
# File 'lib/jsonapi_compliable/base.rb', line 34 def wrap_context if self.class._jsonapi_compliable resource.with_context(self, action_name.to_sym) do yield end end end |