class Graphiti::Resource
Public Class Methods
context()
click to toggle source
# File lib/graphiti/resource.rb, line 46 def self.context Graphiti.context[:object] end
context_namespace()
click to toggle source
# File lib/graphiti/resource.rb, line 54 def self.context_namespace Graphiti.context[:namespace] end
Public Instance Methods
after_commit(model, metadata)
click to toggle source
# File lib/graphiti/resource.rb, line 134 def after_commit(model, metadata) hooks = self.class.config[:after_commit][metadata[:method]] || [] hooks.each do |hook| instance_exec(model, metadata, &hook) end end
after_filtering(scope)
click to toggle source
# File lib/graphiti/resource.rb, line 23 def after_filtering(scope) scope end
after_graph_persist(model, metadata)
click to toggle source
# File lib/graphiti/resource.rb, line 120 def after_graph_persist(model, metadata) hooks = self.class.config[:after_graph_persist][metadata[:method]] || [] hooks.each do |hook| instance_exec(model, metadata, &hook) end end
around_scoping(scope, query_hash) { |scope| ... }
click to toggle source
# File lib/graphiti/resource.rb, line 11 def around_scoping(scope, query_hash) extra_fields = query_hash[:extra_fields] || {} extra_fields = extra_fields[type] || [] extra_fields.each do |name| if (config = self.class.config[:extra_attributes][name]) scope = instance_exec(scope, &config[:hook]) if config[:hook] end end yield scope end
associate(parent, child, association_name, type)
click to toggle source
# File lib/graphiti/resource.rb, line 92 def associate(parent, child, association_name, type) adapter.associate(parent, child, association_name, type) end
associate_all(parent, children, association_name, type)
click to toggle source
# File lib/graphiti/resource.rb, line 88 def associate_all(parent, children, association_name, type) adapter.associate_all(parent, children, association_name, type) end
base_scope()
click to toggle source
# File lib/graphiti/resource.rb, line 66 def base_scope adapter.base_scope(model) end
before_commit(model, metadata)
click to toggle source
# File lib/graphiti/resource.rb, line 127 def before_commit(model, metadata) hooks = self.class.config[:before_commit][metadata[:method]] || [] hooks.each do |hook| instance_exec(model, metadata, &hook) end end
before_resolve(scope, query)
click to toggle source
# File lib/graphiti/resource.rb, line 112 def before_resolve(scope, query) scope end
build_scope(base, query, opts = {})
click to toggle source
# File lib/graphiti/resource.rb, line 62 def build_scope(base, query, opts = {}) Scope.new(base, self, query, opts) end
context()
click to toggle source
# File lib/graphiti/resource.rb, line 50 def context self.class.context end
context_namespace()
click to toggle source
# File lib/graphiti/resource.rb, line 58 def context_namespace self.class.context_namespace end
decorate_record(record, index = nil)
click to toggle source
# File lib/graphiti/resource.rb, line 31 def decorate_record(record, index = nil) unless record.instance_variable_get(:@__graphiti_serializer) serializer = serializer_for(record) record.instance_variable_set(:@__graphiti_serializer, serializer) record.instance_variable_set(:@__graphiti_resource, self) record.instance_variable_set(:@__graphiti_index, index) if index end end
disassociate(parent, child, association_name, type)
click to toggle source
# File lib/graphiti/resource.rb, line 96 def disassociate(parent, child, association_name, type) adapter.disassociate(parent, child, association_name, type) end
links(model)
click to toggle source
# File lib/graphiti/resource.rb, line 157 def links(model) self.class.links.each_with_object({}) do |(name, blk), memo| memo[name] = instance_exec(model, &blk) end end
links?()
click to toggle source
# File lib/graphiti/resource.rb, line 153 def links? self.class.links.any? end
persist_with_relationships(meta, attributes, relationships, caller_model = nil, foreign_key = nil)
click to toggle source
# File lib/graphiti/resource.rb, line 100 def persist_with_relationships(meta, attributes, relationships, caller_model = nil, foreign_key = nil) persistence = Graphiti::Util::Persistence \ .new(self, meta, attributes, relationships, caller_model, foreign_key) persistence.run end
resolve(scope)
click to toggle source
# File lib/graphiti/resource.rb, line 116 def resolve(scope) adapter.resolve(scope) end
serializer_for(model)
click to toggle source
# File lib/graphiti/resource.rb, line 27 def serializer_for(model) serializer end
stat(attribute, calculation)
click to toggle source
# File lib/graphiti/resource.rb, line 106 def stat(attribute, calculation) stats_dsl = stats[attribute] || stats[attribute.to_sym] raise Errors::StatNotFound.new(attribute, calculation) unless stats_dsl stats_dsl.calculation(calculation) end
transaction() { || ... }
click to toggle source
# File lib/graphiti/resource.rb, line 141 def transaction response = nil begin adapter.transaction(model) do response = yield end rescue Errors::ValidationError => e response = {result: e.validation_response} end response end
typecast(name, value, flag)
click to toggle source
# File lib/graphiti/resource.rb, line 70 def typecast(name, value, flag) att = get_attr!(name, flag, request: true) type_name = att[:type] if flag == :filterable type_name = filters[name][:type] end type = Graphiti::Types[type_name] return if value.nil? && type[:kind] != "array" begin flag = :read if flag == :readable flag = :write if flag == :writable flag = :params if [:sortable, :filterable].include?(flag) type[flag][value] rescue => e raise Errors::TypecastFailed.new(self, name, value, e, type_name) end end
with_context(object, namespace = nil) { || ... }
click to toggle source
# File lib/graphiti/resource.rb, line 40 def with_context(object, namespace = nil) Graphiti.with_context(object, namespace) do yield end end