Safe Haskell | None |
---|---|
Language | Haskell2010 |
Implement the "Execution" part of the GraphQL spec.
Actually, most of the execution work takes place in Resolver
, but
there's still a fair bit required to glue together the results of
Validation
and the processing in Resolver
.
This module provides that glue.
- type VariableValues = Map Variable Value
- data ExecutionError
- formatError :: GraphQLError e => e -> Text
- getOperation :: QueryDocument value -> Maybe Name -> Either ExecutionError (Operation value)
- substituteVariables :: Operation VariableValue -> VariableValues -> Either ExecutionError (Operation Value)
Documentation
type VariableValues = Map Variable Value Source #
A map of variables to their values.
In GraphQL the variable values are not part of the query itself, they are
instead passed in through a separate channel. Create a VariableValues
from this other channel and pass it to substituteVariables
.
GraphQL allows the values of variables to be specified, but doesn't provide a way for doing so in the language.
data ExecutionError Source #
An error that occurs while executing a query. Technically,
ResolverError
also falls into the same category, but is separate to help
our code be a bit better organized.
formatError :: GraphQLError e => e -> Text Source #
Represent an error as human-readable text, primarily intended for developers of GraphQL clients, and secondarily for developers of GraphQL servers.
getOperation :: QueryDocument value -> Maybe Name -> Either ExecutionError (Operation value) Source #
Get an operation from a GraphQL document
https://facebook.github.io/graphql/#sec-Executing-Requests
GetOperation(document, operationName):
- If {operationName} is {null}:
- If {document} contains exactly one operation.
- Return the Operation contained in the {document}.
- Otherwise produce a query error requiring {operationName}.
- Otherwise:
- Let {operation} be the Operation named {operationName} in {document}.
- If {operation} was not found, produce a query error.
- Return {operation}.
substituteVariables :: Operation VariableValue -> VariableValues -> Either ExecutionError (Operation Value) Source #
Substitute variables in a GraphQL document.
Once this is done, there will be no variables in the document whatsoever.