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
-
#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
#default_jsonapi_render_options ⇒ Object
render_jsonapi(foo) equivalent to render jsonapi: foo, default_jsonapi_render_options
85 86 87 88 |
# File 'lib/jsonapi_compliable/base.rb', line 85 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
90 91 92 |
# File 'lib/jsonapi_compliable/base.rb', line 90 def force_includes? not params[:data].nil? end |
#jsonapi_create ⇒ Object
50 51 52 53 54 55 56 57 58 |
# File 'lib/jsonapi_compliable/base.rb', line 50 def jsonapi_create created = resource.transaction do resource.persist_with_relationships \ deserialized_params., deserialized_params.attributes, deserialized_params.relationships end Util::ValidationResponse.new(created, deserialized_params) 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
60 61 62 63 64 65 66 67 68 |
# File 'lib/jsonapi_compliable/base.rb', line 60 def jsonapi_update updated = resource.transaction do resource.persist_with_relationships \ deserialized_params., deserialized_params.attributes, deserialized_params.relationships end Util::ValidationResponse.new(updated, deserialized_params) end |
#perform_render_jsonapi(opts) ⇒ Object
70 71 72 |
# File 'lib/jsonapi_compliable/base.rb', line 70 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
74 75 76 77 78 79 80 81 |
# File 'lib/jsonapi_compliable/base.rb', line 74 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 |