Module: Graphiti::ActiveGraph::ResourceInstanceMethods

Defined in:
lib/graphiti/active_graph/resource.rb

Instance Method Summary collapse

Instance Method Details

#before_resolve(scope, query) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/graphiti/active_graph/resource.rb', line 38

def before_resolve(scope, query)
  if query.params[:group_by].present?
    scope.collect { |gp| query.params[:group_class].new(name: gp['name']) }
  else
    scope
  end
end

#relation_resource?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/graphiti/active_graph/resource.rb', line 34

def relation_resource?
  self.class.relation_resource?
end

#sideload_name_arr(query) ⇒ Object



46
47
48
# File 'lib/graphiti/active_graph/resource.rb', line 46

def sideload_name_arr(query)
  query.sideloads.keys.map(&:to_sym)
end

#typecast(name, value, flag) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/graphiti/active_graph/resource.rb', line 50

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