Sha256: 63d8ea70a38d214812af729d94b7c51be13e28477671ddbc33cb8fb7908e2648
Contents?: true
Size: 1.78 KB
Versions: 16
Compression:
Stored size: 1.78 KB
Contents
module Graphiti class Runner attr_reader :params attr_reader :deserialized_payload def initialize(resource_class, params, query = nil) @resource_class = resource_class @params = params @query = query validator = RequestValidator.new(jsonapi_resource, params) validator.validate! @deserialized_payload = validator.deserialized_payload end def jsonapi_resource @jsonapi_resource ||= @resource_class.new end # Typically, this is 'self' of a controller # We're overriding here so we can do stuff like # # Graphiti.with_context my_context, {} do # Runner.new ... # end def jsonapi_context Graphiti.context[:object] end def query @query ||= Query.new(jsonapi_resource, params) end def query_hash @query_hash ||= query.hash end def wrap_context Graphiti.with_context(jsonapi_context, action_name.to_sym) do yield end end def jsonapi_scope(scope, opts = {}) jsonapi_resource.build_scope(scope, query, opts) end def jsonapi_render_options options = {} options.merge!(default_jsonapi_render_options) options[:meta] ||= {} options[:expose] ||= {} options[:expose][:context] = jsonapi_context options end def proxy(base = nil, opts = {}) base ||= jsonapi_resource.base_scope scope_opts = opts.slice :sideload_parent_length, :default_paginate, :after_resolve, :sideload, :parent, :params scope = jsonapi_scope(base, scope_opts) ResourceProxy.new jsonapi_resource, scope, query, payload: deserialized_payload, single: opts[:single], raise_on_missing: opts[:raise_on_missing] end end end
Version data entries
16 entries across 16 versions & 1 rubygems