Safe Haskell | None |
---|---|
Language | Haskell2010 |
This module provides a representation of a GraphQL
Schema in addition to
functions for defining and manipulating schemas.
Synopsis
- data Resolver m
- type Schema m = NonEmpty (Resolver m)
- type Subs = Name -> Maybe Value
- object :: MonadIO m => Name -> ActionT m [Resolver m] -> Resolver m
- objectA :: MonadIO m => Name -> (Arguments -> ActionT m [Resolver m]) -> Resolver m
- scalar :: (MonadIO m, ToJSON a) => Name -> ActionT m a -> Resolver m
- scalarA :: (MonadIO m, ToJSON a) => Name -> (Arguments -> ActionT m a) -> Resolver m
- enum :: MonadIO m => Name -> ActionT m [Text] -> Resolver m
- enumA :: MonadIO m => Name -> (Arguments -> ActionT m [Text]) -> Resolver m
- resolve :: MonadIO m => [Resolver m] -> Fields -> CollectErrsT m Value
- wrappedEnum :: MonadIO m => Name -> ActionT m (Wrapping [Text]) -> Resolver m
- wrappedEnumA :: MonadIO m => Name -> (Arguments -> ActionT m (Wrapping [Text])) -> Resolver m
- wrappedObject :: MonadIO m => Name -> ActionT m (Wrapping [Resolver m]) -> Resolver m
- wrappedObjectA :: MonadIO m => Name -> (Arguments -> ActionT m (Wrapping [Resolver m])) -> Resolver m
- wrappedScalar :: (MonadIO m, ToJSON a) => Name -> ActionT m (Wrapping a) -> Resolver m
- wrappedScalarA :: (MonadIO m, ToJSON a) => Name -> (Arguments -> ActionT m (Wrapping a)) -> Resolver m
- data Field
- data Argument = Argument Name Value
- data Value
Documentation
type Schema m = NonEmpty (Resolver m) Source #
Deprecated: Use NonEmpty (Resolver m) instead
A GraphQL schema.
m
is usually expected to be an instance of MonadIO
.
scalar :: (MonadIO m, ToJSON a) => Name -> ActionT m a -> Resolver m Source #
A scalar represents a primitive value, like a string or an integer.
enumA :: MonadIO m => Name -> (Arguments -> ActionT m [Text]) -> Resolver m Source #
Deprecated: Use scalarA instead
wrappedEnum :: MonadIO m => Name -> ActionT m (Wrapping [Text]) -> Resolver m Source #
Deprecated: Use wrappedScalar instead
wrappedEnumA :: MonadIO m => Name -> (Arguments -> ActionT m (Wrapping [Text])) -> Resolver m Source #
Deprecated: Use wrappedScalarA instead
wrappedObject :: MonadIO m => Name -> ActionT m (Wrapping [Resolver m]) -> Resolver m Source #
Like object
but can be null or a list of objects.
wrappedObjectA :: MonadIO m => Name -> (Arguments -> ActionT m (Wrapping [Resolver m])) -> Resolver m Source #
wrappedScalar :: (MonadIO m, ToJSON a) => Name -> ActionT m (Wrapping a) -> Resolver m Source #
Like scalar
but can be null or a list of scalars.
wrappedScalarA :: (MonadIO m, ToJSON a) => Name -> (Arguments -> ActionT m (Wrapping a)) -> Resolver m Source #
AST Reexports
A single GraphQL field.
Only required property of a field, is its name. Optionally it can also have an alias, arguments or a list of subfields.
Given the following query:
{ zuck: user(id: 4) { id name } }
- "user", "id" and "name" are field names.
- "user" has two subfields, "id" and "name".
- "zuck" is an alias for "user". "id" and "name" have no aliases.
- "id: 4" is an argument for "name". "id" and "name don't have any arguments.
Single argument.
{ user(id: 4) { name } }
Here "id" is an argument for the field "user" and its value is 4.
Represents accordingly typed GraphQL values.
ValueInt Int32 | |
ValueFloat Double | |
ValueString Text | |
ValueBoolean Bool | |
ValueNull | |
ValueEnum Name | |
ValueList [Value] | |
ValueObject [ObjectField] |