class GraphQL::Query::Partial
This class is like a GraphQL::Query, except it can run on an arbitrary path within a query string.
It depends on a “parent” Query.
During execution, it calls query-related tracing hooks but passes itself as query:.
The Partial will use your Schema.resolve_type hook to find the right GraphQL type to use for object in some cases.
Run via Query#run_partials.
Attributes
Public Class Methods
# File lib/graphql/query/partial.rb, line 28 def initialize(path: nil, object:, query:, context: nil, fragment_node: nil, type: nil) @path = path @object = object @query = query @schema = query.schema context_vals = @query.context.to_h if context context_vals = context_vals.merge(context) end @context = GraphQL::Query::Context.new(query: self, schema: @query.schema, values: context_vals) @multiplex = nil @result_values = nil @result = nil @finalizers = @top_level_finalizers = nil if fragment_node @ast_nodes = [fragment_node] @root_type = type || raise(ArgumentError, "Pass `type:` when using `node:`") # This is only used when `@leaf` @field_definition = nil elsif path.nil? raise ArgumentError, "`path:` is required if `node:` is not given; add `path:`" else set_type_info_from_path end @leaf = @root_type.unwrap.kind.leaf? end
Parameters
-
path(Array<String, Integer>) — A path inquery.query_stringto start executing from -
object(Object) — A starting object for execution -
query(GraphQL::Query) — A full query instance that this partial is based on. Caches are shared. -
context(Hash) — Extra context values to merge intoquery.context, if provided -
fragment_node(GraphQL::Language::Nodes::InlineFragment, GraphQL::Language::Nodes::FragmentDefinition)
Public Instance Methods
Source
# File lib/graphql/query/partial.rb, line 129 def analysis_errors=(_ignored) # pass end
Source
# File lib/graphql/query/partial.rb, line 125 def analyzers EmptyObjects::EMPTY_ARRAY end
Source
# File lib/graphql/query/partial.rb, line 89 def current_trace @query.current_trace end
Source
# File lib/graphql/query/partial.rb, line 105 def fragments @query.fragments end
Source
# File lib/graphql/query/partial.rb, line 97 def resolve_type(...) @query.resolve_type(...) end
Source
# File lib/graphql/query/partial.rb, line 85 def result @result ||= Result.new(query: self, values: result_values) end
Source
# File lib/graphql/query/partial.rb, line 121 def run_partials(...) @query.run_partials(...) end
Source
# File lib/graphql/query/partial.rb, line 137 def selected_operation Language::Nodes::OperationDefinition.new(selections: ast_nodes.flat_map(&:selections)) end
Source
# File lib/graphql/query/partial.rb, line 145 def selected_operation_name @query.selected_operation_name end
Source
# File lib/graphql/query/partial.rb, line 141 def static_errors @query.static_errors end
Source
# File lib/graphql/query/partial.rb, line 133 def subscription? @query.subscription? end
Source
# File lib/graphql/query/partial.rb, line 101 def variables @query.variables end