Sha256: ae794baa876108718a75c305dc4987624d5f42b67a9500349ebca6692907edc6
Contents?: true
Size: 1.73 KB
Versions: 3
Compression:
Stored size: 1.73 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) 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
3 entries across 3 versions & 1 rubygems