morpheus-graphql-0.12.0: Morpheus GraphQL

Safe HaskellNone
LanguageHaskell2010

Data.Morpheus.Types

Description

GQL Types

Synopsis

Documentation

data Event e c #

Constructors

Event 

Fields

Instances
GQLChannel (Event channel content) 
Instance details

Defined in Data.Morpheus.Types.Internal.Resolving.Core

Associated Types

type StreamChannel (Event channel content) :: Type #

Methods

streamChannels :: Event channel content -> [Channel (Event channel content)] #

type StreamChannel (Event channel content) 
Instance details

Defined in Data.Morpheus.Types.Internal.Resolving.Core

type StreamChannel (Event channel content) = channel

class IsObject (KIND a) => GQLType a where Source #

Minimal complete definition

Nothing

Associated Types

type KIND a :: GQL_KIND Source #

Instances
GQLType Bool Source # 
Instance details

Defined in Data.Morpheus.Server.Types.GQLType

Associated Types

type KIND Bool :: GQL_KIND Source #

type CUSTOM Bool :: Bool

GQLType Float Source # 
Instance details

Defined in Data.Morpheus.Server.Types.GQLType

Associated Types

type KIND Float :: GQL_KIND Source #

type CUSTOM Float :: Bool

GQLType Int Source # 
Instance details

Defined in Data.Morpheus.Server.Types.GQLType

Associated Types

type KIND Int :: GQL_KIND Source #

type CUSTOM Int :: Bool

GQLType () Source # 
Instance details

Defined in Data.Morpheus.Server.Types.GQLType

Associated Types

type KIND () :: GQL_KIND Source #

type CUSTOM () :: Bool

GQLType Text Source # 
Instance details

Defined in Data.Morpheus.Server.Types.GQLType

Associated Types

type KIND Text :: GQL_KIND Source #

type CUSTOM Text :: Bool

GQLType ID Source # 
Instance details

Defined in Data.Morpheus.Server.Types.ID

Associated Types

type KIND ID :: GQL_KIND Source #

type CUSTOM ID :: Bool

GQLType a => GQLType [a] Source # 
Instance details

Defined in Data.Morpheus.Server.Types.GQLType

Associated Types

type KIND [a] :: GQL_KIND Source #

type CUSTOM [a] :: Bool

GQLType a => GQLType (Maybe a) Source # 
Instance details

Defined in Data.Morpheus.Server.Types.GQLType

Associated Types

type KIND (Maybe a) :: GQL_KIND Source #

type CUSTOM (Maybe a) :: Bool

GQLType a => GQLType (Set a) Source # 
Instance details

Defined in Data.Morpheus.Server.Types.GQLType

Associated Types

type KIND (Set a) :: GQL_KIND Source #

type CUSTOM (Set a) :: Bool

Typeable m => GQLType (Undefined m) Source # 
Instance details

Defined in Data.Morpheus.Server.Types.GQLType

Associated Types

type KIND (Undefined m) :: GQL_KIND Source #

type CUSTOM (Undefined m) :: Bool

GQLType b => GQLType (a -> b) Source # 
Instance details

Defined in Data.Morpheus.Server.Types.GQLType

Associated Types

type KIND (a -> b) :: GQL_KIND Source #

type CUSTOM (a -> b) :: Bool

Methods

implements :: Proxy (a -> b) -> [(TypeName, TypeUpdater)] Source #

description :: Proxy (a -> b) -> Maybe Text Source #

isObjectKind :: Proxy (a -> b) -> Bool

__typeName :: Proxy (a -> b) -> TypeName

__typeFingerprint :: Proxy (a -> b) -> DataFingerprint

GQLType a => GQLType (Either s a) Source # 
Instance details

Defined in Data.Morpheus.Server.Types.GQLType

Associated Types

type KIND (Either s a) :: GQL_KIND Source #

type CUSTOM (Either s a) :: Bool

(Typeable a, Typeable b, GQLType a, GQLType b) => GQLType (a, b) Source # 
Instance details

Defined in Data.Morpheus.Server.Types.GQLType

Associated Types

type KIND (a, b) :: GQL_KIND Source #

type CUSTOM (a, b) :: Bool

(Typeable k, Typeable v) => GQLType (Map k v) Source # 
Instance details

Defined in Data.Morpheus.Server.Types.GQLType

Associated Types

type KIND (Map k v) :: GQL_KIND Source #

type CUSTOM (Map k v) :: Bool

GQLType a => GQLType (Resolver o e m a) Source # 
Instance details

Defined in Data.Morpheus.Server.Types.GQLType

Associated Types

type KIND (Resolver o e m a) :: GQL_KIND Source #

type CUSTOM (Resolver o e m a) :: Bool

class GQLScalar a where Source #

GraphQL Scalar

parseValue and serialize should be provided for every instances manually

Methods

parseValue :: ScalarValue -> Either Text a Source #

value parsing and validating

for exhaustive pattern matching should be handled all scalar types : ScalarValue, ScalarValue, ScalarValue, Boolean

invalid values can be reported with Left constructor :

  parseValue String _ = Left "" -- without error message
  -- or
  parseValue String _ = Left "Error Message"

serialize :: a -> ScalarValue Source #

serialization of haskell type into scalar value

data GQLRequest #

GraphQL HTTP Request Body

Instances
Show GQLRequest 
Instance details

Defined in Data.Morpheus.Types.IO

Generic GQLRequest 
Instance details

Defined in Data.Morpheus.Types.IO

Associated Types

type Rep GQLRequest :: Type -> Type #

ToJSON GQLRequest 
Instance details

Defined in Data.Morpheus.Types.IO

FromJSON GQLRequest 
Instance details

Defined in Data.Morpheus.Types.IO

Interpreter e m GQLRequest (m GQLResponse) Source # 
Instance details

Defined in Data.Morpheus.Server.Deriving.Interpreter

Methods

interpreter :: (Monad m, RootResCon m e query mut sub) => GQLRootResolver m e query mut sub -> GQLRequest -> m GQLResponse Source #

type Rep GQLRequest 
Instance details

Defined in Data.Morpheus.Types.IO

type Rep GQLRequest = D1 (MetaData "GQLRequest" "Data.Morpheus.Types.IO" "morpheus-graphql-core-0.12.0-EoaVoZlZiMJ44y6UBTUaId" False) (C1 (MetaCons "GQLRequest" PrefixI True) (S1 (MetaSel (Just "query") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Token) :*: (S1 (MetaSel (Just "operationName") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe FieldName)) :*: S1 (MetaSel (Just "variables") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Value)))))

data GQLResponse #

GraphQL Response

Constructors

Data ValidValue 
Errors [GQLError] 
Instances
Show GQLResponse 
Instance details

Defined in Data.Morpheus.Types.IO

Generic GQLResponse 
Instance details

Defined in Data.Morpheus.Types.IO

Associated Types

type Rep GQLResponse :: Type -> Type #

ToJSON GQLResponse 
Instance details

Defined in Data.Morpheus.Types.IO

FromJSON GQLResponse 
Instance details

Defined in Data.Morpheus.Types.IO

Interpreter e m GQLRequest (m GQLResponse) Source # 
Instance details

Defined in Data.Morpheus.Server.Deriving.Interpreter

Methods

interpreter :: (Monad m, RootResCon m e query mut sub) => GQLRootResolver m e query mut sub -> GQLRequest -> m GQLResponse Source #

type Rep GQLResponse 
Instance details

Defined in Data.Morpheus.Types.IO

type Rep GQLResponse = D1 (MetaData "GQLResponse" "Data.Morpheus.Types.IO" "morpheus-graphql-core-0.12.0-EoaVoZlZiMJ44y6UBTUaId" False) (C1 (MetaCons "Data" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 ValidValue)) :+: C1 (MetaCons "Errors" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [GQLError])))

newtype ID Source #

default GraphQL type, parses only ScalarValue and ScalarValue values, serialized always as ScalarValue

Constructors

ID 

Fields

Instances
Show ID Source # 
Instance details

Defined in Data.Morpheus.Server.Types.ID

Methods

showsPrec :: Int -> ID -> ShowS #

show :: ID -> String #

showList :: [ID] -> ShowS #

Generic ID Source # 
Instance details

Defined in Data.Morpheus.Server.Types.ID

Associated Types

type Rep ID :: Type -> Type #

Methods

from :: ID -> Rep ID x #

to :: Rep ID x -> ID #

ToJSON ID Source # 
Instance details

Defined in Data.Morpheus.Server.Types.ID

FromJSON ID Source # 
Instance details

Defined in Data.Morpheus.Server.Types.ID

GQLScalar ID Source # 
Instance details

Defined in Data.Morpheus.Server.Types.ID

GQLType ID Source # 
Instance details

Defined in Data.Morpheus.Server.Types.ID

Associated Types

type KIND ID :: GQL_KIND Source #

type CUSTOM ID :: Bool

type Rep ID Source # 
Instance details

Defined in Data.Morpheus.Server.Types.ID

type Rep ID = D1 (MetaData "ID" "Data.Morpheus.Server.Types.ID" "morpheus-graphql-0.12.0-GyIvgB1dfhEKPHUCtpqLEM" True) (C1 (MetaCons "ID" PrefixI True) (S1 (MetaSel (Just "unpackID") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)))
type KIND ID Source # 
Instance details

Defined in Data.Morpheus.Server.Types.ID

type KIND ID = SCALAR

data ScalarValue #

Primitive Values for GQLScalar: ScalarValue, ScalarValue, ScalarValue, Boolean. for performance reason type Text represents GraphQl ScalarValue value

Instances
Eq ScalarValue 
Instance details

Defined in Data.Morpheus.Types.Internal.AST.Value

Show ScalarValue 
Instance details

Defined in Data.Morpheus.Types.Internal.AST.Value

Generic ScalarValue 
Instance details

Defined in Data.Morpheus.Types.Internal.AST.Value

Associated Types

type Rep ScalarValue :: Type -> Type #

Lift ScalarValue 
Instance details

Defined in Data.Morpheus.Types.Internal.AST.Value

Methods

lift :: ScalarValue -> Q Exp #

ToJSON ScalarValue 
Instance details

Defined in Data.Morpheus.Types.Internal.AST.Value

FromJSON ScalarValue 
Instance details

Defined in Data.Morpheus.Types.Internal.AST.Value

type Rep ScalarValue 
Instance details

Defined in Data.Morpheus.Types.Internal.AST.Value

data GQLRootResolver (m :: * -> *) event (query :: (* -> *) -> *) (mut :: (* -> *) -> *) (sub :: (* -> *) -> *) Source #

GraphQL Root resolver, also the interpreter generates a GQL schema from it. queryResolver is required, mutationResolver and subscriptionResolver are optional, if your schema does not supports mutation or subscription , you can use () for it.

Constructors

GQLRootResolver 

Fields

constRes :: (WithOperation o, Monad m) => b -> a -> Resolver o e m b Source #

constMutRes :: Monad m => [e] -> a -> args -> ResolverM e m a Source #

data Undefined (m :: * -> *) Source #

Constructors

Undefined 
Instances
Show (Undefined m) Source # 
Instance details

Defined in Data.Morpheus.Server.Types.Types

Generic (Undefined m) Source # 
Instance details

Defined in Data.Morpheus.Server.Types.Types

Associated Types

type Rep (Undefined m) :: Type -> Type #

Methods

from :: Undefined m -> Rep (Undefined m) x #

to :: Rep (Undefined m) x -> Undefined m #

Typeable m => GQLType (Undefined m) Source # 
Instance details

Defined in Data.Morpheus.Server.Types.GQLType

Associated Types

type KIND (Undefined m) :: GQL_KIND Source #

type CUSTOM (Undefined m) :: Bool

type Rep (Undefined m) Source # 
Instance details

Defined in Data.Morpheus.Server.Types.Types

type Rep (Undefined m) = D1 (MetaData "Undefined" "Data.Morpheus.Server.Types.Types" "morpheus-graphql-0.12.0-GyIvgB1dfhEKPHUCtpqLEM" False) (C1 (MetaCons "Undefined" PrefixI False) (U1 :: Type -> Type))
type KIND (Undefined m) Source # 
Instance details

Defined in Data.Morpheus.Server.Types.GQLType

data Resolver (o :: OperationType) event (m :: Type -> Type) value #

Instances
Monad m => PushEvents e (Resolver MUTATION e m) 
Instance details

Defined in Data.Morpheus.Types.Internal.Resolving.Resolver

Methods

pushEvents :: [e] -> Resolver MUTATION e m () #

(LiftOperation o, Monad m) => Failure Message (Resolver o e m) 
Instance details

Defined in Data.Morpheus.Types.Internal.Resolving.Resolver

Methods

failure :: Message -> Resolver o e m v #

(LiftOperation o, Monad m) => Failure GQLErrors (Resolver o e m) 
Instance details

Defined in Data.Morpheus.Types.Internal.Resolving.Resolver

Methods

failure :: GQLErrors -> Resolver o e m v #

LiftOperation o => MonadTrans (Resolver o e) 
Instance details

Defined in Data.Morpheus.Types.Internal.Resolving.Resolver

Methods

lift :: Monad m => m a -> Resolver o e m a #

(Monad m, LiftOperation o) => Monad (Resolver o e m) 
Instance details

Defined in Data.Morpheus.Types.Internal.Resolving.Resolver

Methods

(>>=) :: Resolver o e m a -> (a -> Resolver o e m b) -> Resolver o e m b #

(>>) :: Resolver o e m a -> Resolver o e m b -> Resolver o e m b #

return :: a -> Resolver o e m a #

fail :: String -> Resolver o e m a #

Functor m => Functor (Resolver o e m) 
Instance details

Defined in Data.Morpheus.Types.Internal.Resolving.Resolver

Methods

fmap :: (a -> b) -> Resolver o e m a -> Resolver o e m b #

(<$) :: a -> Resolver o e m b -> Resolver o e m a #

(Monad m, LiftOperation o) => MonadFail (Resolver o e m) 
Instance details

Defined in Data.Morpheus.Types.Internal.Resolving.Resolver

Methods

fail :: String -> Resolver o e m a #

(LiftOperation o, Monad m) => Applicative (Resolver o e m) 
Instance details

Defined in Data.Morpheus.Types.Internal.Resolving.Resolver

Methods

pure :: a -> Resolver o e m a #

(<*>) :: Resolver o e m (a -> b) -> Resolver o e m a -> Resolver o e m b #

liftA2 :: (a -> b -> c) -> Resolver o e m a -> Resolver o e m b -> Resolver o e m c #

(*>) :: Resolver o e m a -> Resolver o e m b -> Resolver o e m b #

(<*) :: Resolver o e m a -> Resolver o e m b -> Resolver o e m a #

(MonadIO m, LiftOperation o) => MonadIO (Resolver o e m) 
Instance details

Defined in Data.Morpheus.Types.Internal.Resolving.Resolver

Methods

liftIO :: IO a -> Resolver o e m a #

Show (Resolver o e m value) 
Instance details

Defined in Data.Morpheus.Types.Internal.Resolving.Resolver

Methods

showsPrec :: Int -> Resolver o e m value -> ShowS #

show :: Resolver o e m value -> String #

showList :: [Resolver o e m value] -> ShowS #

(Monad m, Semigroup a, LiftOperation o) => Semigroup (Resolver o e m a) 
Instance details

Defined in Data.Morpheus.Types.Internal.Resolving.Resolver

Methods

(<>) :: Resolver o e m a -> Resolver o e m a -> Resolver o e m a #

sconcat :: NonEmpty (Resolver o e m a) -> Resolver o e m a #

stimes :: Integral b => b -> Resolver o e m a -> Resolver o e m a #

GQLType a => GQLType (Resolver o e m a) Source # 
Instance details

Defined in Data.Morpheus.Server.Types.GQLType

Associated Types

type KIND (Resolver o e m a) :: GQL_KIND Source #

type CUSTOM (Resolver o e m a) :: Bool

type UnSubResolver (Resolver SUBSCRIPTION e m) 
Instance details

Defined in Data.Morpheus.Types.Internal.Resolving.Resolver

type KIND (Resolver o e m a) Source # 
Instance details

Defined in Data.Morpheus.Server.Types.GQLType

type KIND (Resolver o e m a) = WRAPPER

type QUERY = Query #

lift :: (MonadTrans t, Monad m) => m a -> t m a #

Lift a computation from the argument monad to the constructed monad.

liftEither :: (MonadTrans t, Monad (t m), Failure Message (t m)) => Monad m => m (Either String a) -> t m a Source #

failRes :: (Monad m, WithOperation o) => String -> Resolver o e m a Source #

Deprecated: use "fail" from MonadFail

publish :: Monad m => [e] -> Resolver MUTATION e m () Source #

subscribe :: (PushEvents (Channel e) (ResolverState (Channel e) m), Monad m) => [StreamChannel e] -> Resolver QUERY e m (e -> Resolver QUERY e m a) -> Resolver SUBSCRIPTION e m a #

unsafeInternalContext :: (Monad m, LiftOperation o) => Resolver o e m Context #

A function to return the internal Context within a resolver's monad. Using the Context itself is unsafe because it expposes internal structures of the AST, but you can use the Data.Morpheus.Types.SelectionTree typeclass to manipulate the internal AST with a safe interface.

data Context #

A datatype to expose Schema and the query's AST information (Selection, Operation).

type SubField m a = m (a (UnSubResolver m)) Source #

type ComposedSubField m f a = m (f (a (UnSubResolver m))) Source #

data Input (api :: API) Source #

Instances
Interpreter e m (Input api) (Stream api e m) Source # 
Instance details

Defined in Data.Morpheus.Server.Deriving.Interpreter

Methods

interpreter :: (Monad m, RootResCon m e query mut sub) => GQLRootResolver m e query mut sub -> Input api -> Stream api e m Source #

data Stream (api :: API) e (m :: * -> *) Source #

Instances
Interpreter e m (Input api) (Stream api e m) Source # 
Instance details

Defined in Data.Morpheus.Server.Deriving.Interpreter

Methods

interpreter :: (Monad m, RootResCon m e query mut sub) => GQLRootResolver m e query mut sub -> Input api -> Stream api e m Source #

type WS = WS Source #

type HTTP = HTTP Source #

type ResolverO o e m a = WithOperation o => Flexible (Resolver o e m) a Source #

type ComposedResolver o e m f a = WithOperation o => Composed (Resolver o e m) f a Source #

type ResolverQ e m a = Flexible (Resolver QUERY e m) a Source #

type ResolverM e m a = Flexible (Resolver MUTATION e m) a Source #

type ResolverS e m a = Resolver SUBSCRIPTION e m (a (Resolver QUERY e m)) Source #

type ResolveQ e m a = ResolverQ e m a Source #

Deprecated: use ResolverQ

type ResolveM e m a = ResolverM e m a Source #

Deprecated: use ResolverM

type ResolveS e m a = ResolverS e m a Source #

Deprecated: use ResolverS

type Res = Resolver QUERY Source #

Deprecated: use ResolverQ

type MutRes = Resolver MUTATION Source #

Deprecated: use ResolverM

type SubRes = Resolver SUBSCRIPTION Source #

Deprecated: use ResolverS

type IORes e = Res e IO Source #

Deprecated: use ResolverQ

type IOMutRes e = MutRes e IO Source #

Deprecated: use ResolverM

type IOSubRes e = SubRes e IO Source #

Deprecated: use ResolverS

interface :: (GQLType a, Introspect a) => Proxy a -> (TypeName, TypeUpdater) Source #