class GraphqlRails::QueryRunner

executes GraphQL queries and returns json

Attributes

group[R]
params[R]
schema_options[R]

Public Class Methods

new(group: nil, params:, schema: nil, router: nil, **schema_options) click to toggle source
# File lib/graphql_rails/query_runner.rb, line 11
def initialize(group: nil, params:, schema: nil, router: nil, **schema_options)
  @group = group
  @graphql_schema = schema
  @params = params
  @schema_options = schema_options
  @router = router
end

Public Instance Methods

call() click to toggle source
# File lib/graphql_rails/query_runner.rb, line 19
def call
  graphql_schema.execute(
    params[:query],
    variables: variables,
    operation_name: params[:operationName],
    **schema_options
  )
end

Private Instance Methods

ensure_hash(ambiguous_param) click to toggle source
# File lib/graphql_rails/query_runner.rb, line 48
def ensure_hash(ambiguous_param)
  if ambiguous_param.blank?
    {}
  elsif ambiguous_param.is_a?(String)
    ensure_hash(JSON.parse(ambiguous_param))
  elsif kind_of_hash?(ambiguous_param)
    ambiguous_param
  else
    raise ArgumentError, "Unexpected parameter: #{ambiguous_param.inspect}"
  end
end
graphql_schema() click to toggle source
# File lib/graphql_rails/query_runner.rb, line 36
def graphql_schema
  @graphql_schema ||= router_schema
end
kind_of_hash?(object) click to toggle source
# File lib/graphql_rails/query_runner.rb, line 60
def kind_of_hash?(object)
  return true if object.is_a?(Hash)

  defined?(ActionController) &&
    defined?(ActionController::Parameters) &&
    object.is_a?(ActionController::Parameters)
end
router() click to toggle source
# File lib/graphql_rails/query_runner.rb, line 40
def router
  @router ||= ::GraphqlRouter
end
router_schema() click to toggle source
# File lib/graphql_rails/query_runner.rb, line 44
def router_schema
  router.graphql_schema(group)
end
variables() click to toggle source
# File lib/graphql_rails/query_runner.rb, line 32
def variables
  ensure_hash(params[:variables])
end