| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Language.GraphQL.Schema
Contents
Description
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.
Constructors
| ValueInt Int32 | |
| ValueFloat Double | |
| ValueString Text | |
| ValueBoolean Bool | |
| ValueNull | |
| ValueEnum Name | |
| ValueList [Value] | |
| ValueObject [ObjectField] |