Class: GraphQL::Query::Context::FieldResolutionContext

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
SharedMethods, Tracing::Traceable
Defined in:
lib/graphql/query/context.rb

Instance Attribute Summary collapse

Attributes included from SharedMethods

#object, #skipped, #value

Instance Method Summary collapse

Methods included from Tracing::Traceable

#trace

Methods included from SharedMethods

#backtrace, #delete_child, #execution_errors, #invalid_null?, #lookahead, #skip, #spawn_child

Constructor Details

#initialize(context, key, irep_node, parent, object) ⇒ FieldResolutionContext

Returns a new instance of FieldResolutionContext.



266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
# File 'lib/graphql/query/context.rb', line 266

def initialize(context, key, irep_node, parent, object)
  @context = context
  @key = key
  @parent = parent
  @object = object
  @irep_node = irep_node
  @field = irep_node.definition
  @parent_type = irep_node.owner_type
  @type = field.type
  # This is needed constantly, so set it ahead of time:
  @query = context.query
  @schema = context.schema
  @tracers = @query.tracers
  # This hack flag is required by ConnectionResolve
  @wrapped_connection = false
  @wrapped_object = false
end

Instance Attribute Details

#fieldObject (readonly)

Returns the value of attribute field.



263
264
265
# File 'lib/graphql/query/context.rb', line 263

def field
  @field
end

#irep_nodeObject (readonly) Also known as: selection

Returns the value of attribute irep_node.



263
264
265
# File 'lib/graphql/query/context.rb', line 263

def irep_node
  @irep_node
end

#keyObject (readonly)

Returns the value of attribute key.



263
264
265
# File 'lib/graphql/query/context.rb', line 263

def key
  @key
end

#parentObject (readonly)

Returns the value of attribute parent.



263
264
265
# File 'lib/graphql/query/context.rb', line 263

def parent
  @parent
end

#parent_typeObject (readonly)

Returns the value of attribute parent_type.



263
264
265
# File 'lib/graphql/query/context.rb', line 263

def parent_type
  @parent_type
end

#queryObject (readonly)

Returns the value of attribute query.



263
264
265
# File 'lib/graphql/query/context.rb', line 263

def query
  @query
end

#schemaObject (readonly)

Returns the value of attribute schema.



263
264
265
# File 'lib/graphql/query/context.rb', line 263

def schema
  @schema
end

#typeObject (readonly)

Returns the value of attribute type.



263
264
265
# File 'lib/graphql/query/context.rb', line 263

def type
  @type
end

#wrapped_connectionObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



285
286
287
# File 'lib/graphql/query/context.rb', line 285

def wrapped_connection
  @wrapped_connection
end

#wrapped_objectObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



285
286
287
# File 'lib/graphql/query/context.rb', line 285

def wrapped_object
  @wrapped_object
end

Instance Method Details

#add_error(error) ⇒ void

This method returns an undefined value.

Add error to current field resolution.

Parameters:



304
305
306
307
308
309
# File 'lib/graphql/query/context.rb', line 304

def add_error(error)
  super
  error.ast_node ||= irep_node.ast_node
  error.path ||= path
  nil
end

#ast_nodeGraphQL::Language::Nodes::Field

Returns The AST node for the currently-executing field.

Returns:



297
298
299
# File 'lib/graphql/query/context.rb', line 297

def ast_node
  @irep_node.ast_node
end

#inspectObject



311
312
313
# File 'lib/graphql/query/context.rb', line 311

def inspect
  "#<GraphQL Context @ #{irep_node.owner_type.name}.#{field.name}>"
end

#pathObject



287
288
289
# File 'lib/graphql/query/context.rb', line 287

def path
  @path ||= @parent.path.dup << @key
end

#value=(new_value) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Set a new value for this field in the response. It may be updated after resolving a Lazy. If it is Execute::PROPAGATE_NULL, tell the owner to propagate null. If it's Execute::Execution::SKIP, remove this field result from its parent

Parameters:

  • new_value (Any)

    The GraphQL-ready value



321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
# File 'lib/graphql/query/context.rb', line 321

def value=(new_value)
  case new_value
  when GraphQL::Execution::Execute::PROPAGATE_NULL, nil
    @invalid_null = true
    @value = nil
    if @type.kind.non_null?
      @parent.received_null_child
    end
  when GraphQL::Execution::Execute::SKIP
    @parent.skipped = true
    @parent.delete_child(self)
  else
    @value = new_value
  end
end