Sha256: 69adfc1402bb5a5f552f85ab8044e878f5036c553ee6f0bcbc85bdb3014dbe28
Contents?: true
Size: 1.76 KB
Versions: 4
Compression:
Stored size: 1.76 KB
Contents
module Graphiti module ActiveGraph module Resource def relation_resource? config[:relation_resource] || false end def relationship_resource=(value) config[:relation_resource] = value end def with_preloaded_obj(obj, params) id = params[:data].try(:[], :id) || params.delete(:id) params[:filter] ||= {} params[:filter][:id] = id if id build(params, nil, raise_on_missing: false, preloaded: obj, bypass_required_filters: true) end def all_with_preloaded(obj_arr, params) build(params, nil, single: false, raise_on_missing: false, preloaded: obj_arr) end def guard_nil_id!(params) end end module ResourceInstanceMethods def relation_resource? self.class.relation_resource? end def sideload_name_arr(query) query.sideloads.keys.map(&:to_sym) end def resolve(scope) adapter.resolve(scope, relation_resource?) end def typecast(name, value, flag) att = get_attr!(name, flag, request: true) # in case of attribute is not declared on resource # do not throw error, return original value without typecast return value unless att 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 end end end
Version data entries
4 entries across 4 versions & 1 rubygems