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