Class: HQ::GraphQL::Object

Inherits:
GraphQL::Schema::Object
  • Object
show all
Extended by:
ObjectAssociation
Includes:
ActiveRecordExtensions, Scalars
Defined in:
lib/hq/graphql/object.rb

Direct Known Subclasses

RootMutation, RootQuery

Constant Summary

Constants included from Scalars

Scalars::Object, Scalars::UUID

Class Method Summary collapse

Methods included from ObjectAssociation

belongs_to, has_many, reflect_on_association

Methods included from ActiveRecordExtensions

included

Class Method Details

.authorize_action(action) ⇒ Object



20
21
22
# File 'lib/hq/graphql/object.rb', line 20

def self.authorize_action(action)
  self.authorized_action = action
end

.authorized?(object, context) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/hq/graphql/object.rb', line 24

def self.authorized?(object, context)
  super && ::HQ::GraphQL.authorized?(authorized_action, object, context)
end

.to_graphqlObject



52
53
54
55
# File 'lib/hq/graphql/object.rb', line 52

def self.to_graphql
  lazy_load!
  super
end

.with_model(model_name, attributes: true, associations: true, auto_nil: true, enums: true) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/hq/graphql/object.rb', line 28

def self.with_model(model_name, attributes: true, associations: true, auto_nil: true, enums: true)
  self.model_name = model_name
  self.auto_load_attributes = attributes
  self.auto_load_associations = associations
  self.auto_load_enums = enums

  lazy_load do
    model_columns.each do |column|
      field_from_column(column, auto_nil: auto_nil)
    end

    model_associations.each do |association|
      next if resource_reflections[association.name.to_s]
      field_from_association(association, auto_nil: auto_nil)
    end

    resource_reflections.values.each do |resource_reflection|
      reflection = resource_reflection.reflection(model_klass)
      next unless reflection
      field_from_association(reflection, auto_nil: auto_nil, internal_association: true, &resource_reflection.block)
    end
  end
end