Class: GraphQL::Query::Context::FieldResolutionContext
- Inherits:
-
Object
- Object
- GraphQL::Query::Context::FieldResolutionContext
- Extended by:
- Forwardable
- Includes:
- SharedMethods, Tracing::Traceable
- Defined in:
- lib/graphql/query/context.rb
Instance Attribute Summary collapse
-
#field ⇒ Object
readonly
Returns the value of attribute field.
-
#irep_node ⇒ Object
(also: #selection)
readonly
Returns the value of attribute irep_node.
-
#key ⇒ Object
readonly
Returns the value of attribute key.
-
#parent ⇒ Object
readonly
Returns the value of attribute parent.
-
#parent_type ⇒ Object
readonly
Returns the value of attribute parent_type.
-
#query ⇒ Object
readonly
Returns the value of attribute query.
-
#schema ⇒ Object
readonly
Returns the value of attribute schema.
-
#type ⇒ Object
readonly
Returns the value of attribute type.
- #wrapped_connection ⇒ Object private
- #wrapped_object ⇒ Object private
Attributes included from SharedMethods
Instance Method Summary collapse
-
#add_error(error) ⇒ void
Add error to current field resolution.
-
#ast_node ⇒ GraphQL::Language::Nodes::Field
The AST node for the currently-executing field.
-
#initialize(context:, key:, irep_node:, parent:, object:) ⇒ FieldResolutionContext
constructor
A new instance of FieldResolutionContext.
- #inspect ⇒ Object
- #path ⇒ Object
-
#value=(new_value) ⇒ Object
private
Set a new value for this field in the response.
Methods included from Tracing::Traceable
Methods included from SharedMethods
#backtrace, #delete, #execution_errors, #invalid_null?, #lookahead, #skip, #spawn_child
Constructor Details
#initialize(context:, key:, irep_node:, parent:, object:) ⇒ FieldResolutionContext
Returns a new instance of FieldResolutionContext.
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 |
# File 'lib/graphql/query/context.rb', line 203 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
#field ⇒ Object (readonly)
Returns the value of attribute field.
200 201 202 |
# File 'lib/graphql/query/context.rb', line 200 def field @field end |
#irep_node ⇒ Object (readonly) Also known as: selection
Returns the value of attribute irep_node.
200 201 202 |
# File 'lib/graphql/query/context.rb', line 200 def irep_node @irep_node end |
#key ⇒ Object (readonly)
Returns the value of attribute key.
200 201 202 |
# File 'lib/graphql/query/context.rb', line 200 def key @key end |
#parent ⇒ Object (readonly)
Returns the value of attribute parent.
200 201 202 |
# File 'lib/graphql/query/context.rb', line 200 def parent @parent end |
#parent_type ⇒ Object (readonly)
Returns the value of attribute parent_type.
200 201 202 |
# File 'lib/graphql/query/context.rb', line 200 def parent_type @parent_type end |
#query ⇒ Object (readonly)
Returns the value of attribute query.
200 201 202 |
# File 'lib/graphql/query/context.rb', line 200 def query @query end |
#schema ⇒ Object (readonly)
Returns the value of attribute schema.
200 201 202 |
# File 'lib/graphql/query/context.rb', line 200 def schema @schema end |
#type ⇒ Object (readonly)
Returns the value of attribute type.
200 201 202 |
# File 'lib/graphql/query/context.rb', line 200 def type @type end |
#wrapped_connection ⇒ 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.
222 223 224 |
# File 'lib/graphql/query/context.rb', line 222 def wrapped_connection @wrapped_connection end |
#wrapped_object ⇒ 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.
222 223 224 |
# File 'lib/graphql/query/context.rb', line 222 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.
241 242 243 244 245 246 |
# File 'lib/graphql/query/context.rb', line 241 def add_error(error) super error.ast_node ||= irep_node.ast_node error.path ||= path nil end |
#ast_node ⇒ GraphQL::Language::Nodes::Field
Returns The AST node for the currently-executing field.
234 235 236 |
# File 'lib/graphql/query/context.rb', line 234 def ast_node @irep_node.ast_node end |
#inspect ⇒ Object
248 249 250 |
# File 'lib/graphql/query/context.rb', line 248 def inspect "#<GraphQL Context @ #{irep_node.owner_type.name}.#{field.name}>" end |
#path ⇒ Object
224 225 226 |
# File 'lib/graphql/query/context.rb', line 224 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
258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 |
# File 'lib/graphql/query/context.rb', line 258 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(self) else @value = new_value end end |