Sha256: b3ee8d490da0514e20f96dd7136659d0f6a0c0f11d51ee34a489a51a826b7ef7
Contents?: true
Size: 1.48 KB
Versions: 2
Compression:
Stored size: 1.48 KB
Contents
module GraphQL class Query class SerialExecution class FieldResolution < GraphQL::Query::BaseExecution::SelectedObjectResolution attr_reader :field, :arguments def initialize(ast_node, parent_type, target, query, execution_strategy) super @field = query.schema.get_field(parent_type, ast_node.name) || raise("No field found on #{parent_type.name} '#{parent_type}' for '#{ast_node.name}'") @arguments = GraphQL::Query::Arguments.new(ast_node.arguments, field.arguments, query.variables) end def result result_name = ast_node.alias || ast_node.name { result_name => result_value} end private def result_value value = field.resolve(target, arguments, query.context) if value == GraphQL::Query::DEFAULT_RESOLVE begin value = target.public_send(ast_node.name) rescue NoMethodError => err raise("Couldn't resolve field '#{ast_node.name}' to #{target.class} '#{target}' (resulted in #{err})") end end return nil if value.nil? resolved_type = field.type.kind.resolve(field.type, value) strategy_class = GraphQL::Query::ValueResolution.get_strategy_for_kind(resolved_type.kind) result_strategy = strategy_class.new(value, resolved_type, target, parent_type, ast_node, query, execution_strategy) result_strategy.result end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
graphql-0.7.1 | lib/graphql/query/serial_execution/field_resolution.rb |
graphql-0.7.0 | lib/graphql/query/serial_execution/field_resolution.rb |