Class: GraphQL::Models::Middleware

Inherits:
Object
  • Object
show all
Defined in:
lib/graphql/models/middleware.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(skip_nil_models = true) ⇒ Middleware

Returns a new instance of Middleware.



4
5
6
# File 'lib/graphql/models/middleware.rb', line 4

def initialize(skip_nil_models = true)
  @skip_nil_models = skip_nil_models
end

Instance Attribute Details

#skip_nil_modelsObject

Returns the value of attribute skip_nil_models.



2
3
4
# File 'lib/graphql/models/middleware.rb', line 2

def skip_nil_models
  @skip_nil_models
end

Instance Method Details

#call(graphql_type, object, field_definition, args, context) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/graphql/models/middleware.rb', line 8

def call(graphql_type, object, field_definition, args, context)
  # If this field defines a path, load the associations in the path
  field_info = GraphQL::Models.field_info(graphql_type, field_definition.name)
  return yield unless field_info

  # Convert the core object into the model
  base_model = field_info.object_to_base_model.call(object)

  GraphQL::Models.load_association(base_model, field_info.path, context).then do |model|
    next nil if model.nil? && @skip_nil_models

    next_args = [graphql_type, model, field_definition, args, context]
    yield(next_args)
  end
end