class GraphQL::PersistedQueries::MultiplexResolver
Resolves multiplex query
Public Class Methods
new(schema, queries, **kwargs)
click to toggle source
# File lib/graphql/persisted_queries/multiplex_resolver.rb, line 7 def initialize(schema, queries, **kwargs) @schema = schema @queries = queries @kwargs = kwargs end
Public Instance Methods
resolve()
click to toggle source
# File lib/graphql/persisted_queries/multiplex_resolver.rb, line 13 def resolve resolve_persisted_queries perform_multiplex results end
Private Instance Methods
perform_multiplex()
click to toggle source
# File lib/graphql/persisted_queries/multiplex_resolver.rb, line 42 def perform_multiplex resolve_idx = (0...@queries.count).select { |i| results[i].nil? } multiplex_result = @schema.multiplex_original( resolve_idx.map { |i| @queries.at(i) }, **@kwargs ) resolve_idx.each_with_index { |res_i, mult_i| results[res_i] = multiplex_result[mult_i] } end
resolve_persisted_queries()
click to toggle source
# File lib/graphql/persisted_queries/multiplex_resolver.rb, line 25 def resolve_persisted_queries @queries.each_with_index do |query_params, i| resolve_persisted_query(query_params, i) end end
resolve_persisted_query(query_params, pos)
click to toggle source
# File lib/graphql/persisted_queries/multiplex_resolver.rb, line 31 def resolve_persisted_query(query_params, pos) extensions = query_params.dig(:context, :extensions) return unless extensions query_params[:query] = Resolver.new(extensions, @schema).resolve(query_params[:query]) rescue GraphQL::PersistedQueries::NotFound, GraphQL::PersistedQueries::WrongHash => e values = { "errors" => [{ "message" => e.message }] } query = GraphQL::Query.new(@schema, query_params[:query]) results[pos] = GraphQL::Query::Result.new(query: query, values: values) end
results()
click to toggle source
# File lib/graphql/persisted_queries/multiplex_resolver.rb, line 21 def results @results ||= Array.new(@queries.count) end