Sha256: 31ff7d114f1c55e25c4e211511b047c200fb45d437f975dcad820feb8ae512c6

Contents?: true

Size: 781 Bytes

Versions: 2

Compression:

Stored size: 781 Bytes

Contents

class GraphQL::Query::SelectionResolver
  attr_reader :result

  RESOLUTION_STRATEGIES = {
    GraphQL::Nodes::Field =>          GraphQL::Query::FieldResolutionStrategy,
    GraphQL::Nodes::FragmentSpread => GraphQL::Query::FragmentSpreadResolutionStrategy,
    GraphQL::Nodes::InlineFragment => GraphQL::Query::InlineFragmentResolutionStrategy,
  }

  def initialize(target, type, selections, operation_resolver)
    @result = selections.reduce({}) do |memo, ast_field|
      chain = GraphQL::Query::DirectiveChain.new(ast_field, operation_resolver) {
        strategy_class = RESOLUTION_STRATEGIES[ast_field.class]
        strategy = strategy_class.new(ast_field, type, target, operation_resolver)
        strategy.result
      }
      memo.merge(chain.result)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
graphql-0.5.0 lib/graph_ql/query/selection_resolver.rb
graphql-0.4.0 lib/graph_ql/query/selection_resolver.rb