module GraphQR::RelationFields

@TODO doc

Public Instance Methods

has_many(field_name, type_class, scope_class: nil, **kwargs, &block) click to toggle source
# File lib/graphqr/relation_fields.rb, line 12
def has_many(field_name, type_class, scope_class: nil, **kwargs, &block)
  type_class = type_class.first

  resolver = has_many_resolver(field_name, type_class, scope_class)

  field(field_name, paginate: true, resolver: resolver, **kwargs, &block)
end
has_one(field_name, type_class, **kwargs, &block) click to toggle source
# File lib/graphqr/relation_fields.rb, line 20
def has_one(field_name, type_class, **kwargs, &block)
  resolver = has_one_resolver(field_name, type_class)

  field(field_name, resolver: resolver, **kwargs, &block)
end

Private Instance Methods

has_many_resolver(collection_name, type_class, scope_class) click to toggle source
# File lib/graphqr/relation_fields.rb, line 28
def has_many_resolver(collection_name, type_class, scope_class)
  resolver = base_collection_resolver(type_class, scope_class)
  resolver.define_method(:unscoped_collection) { @unscoped_collection ||= object.send(collection_name) }
  resolver
end
has_one_resolver(resource_name, type_class) click to toggle source
# File lib/graphqr/relation_fields.rb, line 34
def has_one_resolver(resource_name, type_class)
  resolver = base_resource_resolver(type_class)
  resolver.define_method(:record) { @record ||= object.send(resource_name) }
  resolver
end