morpheus-graphql-0.14.0: Morpheus GraphQL

Safe HaskellNone
LanguageHaskell2010

Data.Morpheus.Types

Description

GQL Types

Synopsis

Documentation

data Event e c #

Constructors

Event 

Fields

Instances
Eq ch => Eq (Channel (Event ch con)) 
Instance details

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

Methods

(==) :: Channel (Event ch con) -> Channel (Event ch con) -> Bool #

(/=) :: Channel (Event ch con) -> Channel (Event ch con) -> Bool #

Interpreter (Event ch cont) m (Input api) (Stream api (Event ch cont) m) Source # 
Instance details

Defined in Data.Morpheus.Server.Deriving.Interpreter

Methods

interpreter :: (Monad m, RootResolverConstraint m (Event ch cont) query mut sub) => RootResolver m (Event ch cont) query mut sub -> Input api -> Stream api (Event ch cont) m Source #

debugInterpreter :: (Monad m, RootResolverConstraint m (Event ch cont) query mut sub) => RootResolver m (Event ch cont) query mut sub -> Input api -> Stream api (Event ch cont) m Source #

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

Minimal complete definition

Nothing

Associated Types

type KIND a :: GQL_KIND Source #

Methods

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

description :: Proxy a -> Maybe Text 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.GQLType

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

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

Defined in Data.Morpheus.Server.Types.GQLType

Associated Types

type KIND (SubscriptionField a) :: GQL_KIND Source #

type CUSTOM (SubscriptionField 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

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

(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

Methods

implements :: Proxy (Resolver o e m a) -> [(TypeName, TypeUpdater)] Source #

description :: Proxy (Resolver o e m a) -> Maybe Text Source #

isObjectKind :: Proxy (Resolver o e m a) -> Bool

__typeName :: Proxy (Resolver o e m a) -> TypeName

__typeFingerprint :: Proxy (Resolver o e m a) -> DataFingerprint

class GQLScalar a where #

GraphQL Scalar

parseValue and serialize should be provided for every instances manually

Methods

parseValue :: ScalarValue -> Either Text a #

value parsing and validating

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

invalid values can be reported with Left constructor :

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

serialize :: a -> ScalarValue #

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

MapAPI GQLRequest 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, RootResolverConstraint m e query mut sub) => RootResolver m e query mut sub -> GQLRequest -> m GQLResponse Source #

debugInterpreter :: (Monad m, RootResolverConstraint m e query mut sub) => RootResolver 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.14.0-9cCegZrAvH6ekJFiMoLe6" 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

MapAPI GQLRequest 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, RootResolverConstraint m e query mut sub) => RootResolver m e query mut sub -> GQLRequest -> m GQLResponse Source #

debugInterpreter :: (Monad m, RootResolverConstraint m e query mut sub) => RootResolver 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.14.0-9cCegZrAvH6ekJFiMoLe6" 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 #

default GraphQL type, parses only String and Int values, serialized always as String

Constructors

ID 

Fields

Instances
Eq ID 
Instance details

Defined in Data.Morpheus.Types.ID

Methods

(==) :: ID -> ID -> Bool #

(/=) :: ID -> ID -> Bool #

Show ID 
Instance details

Defined in Data.Morpheus.Types.ID

Methods

showsPrec :: Int -> ID -> ShowS #

show :: ID -> String #

showList :: [ID] -> ShowS #

Generic ID 
Instance details

Defined in Data.Morpheus.Types.ID

Associated Types

type Rep ID :: Type -> Type #

Methods

from :: ID -> Rep ID x #

to :: Rep ID x -> ID #

ToJSON ID 
Instance details

Defined in Data.Morpheus.Types.ID

FromJSON ID 
Instance details

Defined in Data.Morpheus.Types.ID

GQLScalar ID 
Instance details

Defined in Data.Morpheus.Types.ID

GQLType ID Source # 
Instance details

Defined in Data.Morpheus.Server.Types.GQLType

Associated Types

type KIND ID :: GQL_KIND Source #

type CUSTOM ID :: Bool

type Rep ID 
Instance details

Defined in Data.Morpheus.Types.ID

type Rep ID = D1 (MetaData "ID" "Data.Morpheus.Types.ID" "morpheus-graphql-core-0.14.0-9cCegZrAvH6ekJFiMoLe6" 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.GQLType

type KIND ID = SCALAR

data ScalarValue #

Primitive Values for GQLScalar: ScalarValue, ScalarValue, String, Boolean. for performance reason type Text represents GraphQl String 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

RenderGQL ScalarValue 
Instance details

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

Methods

render :: ScalarValue -> Rendering #

type Rep ScalarValue 
Instance details

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

data RootResolver (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

RootResolver 

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.14.0-EJqz3Vf379fJSJ5WExkwRr" 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, Monad m) => MonadReader ResolverContext (Resolver o e m) 
Instance details

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

Methods

ask :: Resolver o e m ResolverContext #

local :: (ResolverContext -> ResolverContext) -> Resolver o e m a -> Resolver o e m a #

reader :: (ResolverContext -> a) -> Resolver o e m a #

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

Methods

implements :: Proxy (Resolver o e m a) -> [(TypeName, TypeUpdater)] Source #

description :: Proxy (Resolver o e m a) -> Maybe Text Source #

isObjectKind :: Proxy (Resolver o e m a) -> Bool

__typeName :: Proxy (Resolver o e m a) -> TypeName

__typeFingerprint :: Proxy (Resolver o e m a) -> DataFingerprint

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 :: (Monad m, Event channel cont ~ e) => channel -> Resolver QUERY e m (e -> Resolver SUBSCRIPTION e m a) -> SubscriptionField (Resolver SUBSCRIPTION e m a) #

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

A function to return the internal ResolverContext within a resolver's monad. Using the ResolverContext 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 ResolverContext #

Instances
Show ResolverContext 
Instance details

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

Monad m => MonadReader ResolverContext (ResolverStateT event m) 
Instance details

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

Methods

ask :: ResolverStateT event m ResolverContext #

local :: (ResolverContext -> ResolverContext) -> ResolverStateT event m a -> ResolverStateT event m a #

reader :: (ResolverContext -> a) -> ResolverStateT event m a #

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

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

Methods

ask :: Resolver o e m ResolverContext #

local :: (ResolverContext -> ResolverContext) -> Resolver o e m a -> Resolver o e m a #

reader :: (ResolverContext -> a) -> Resolver o e m a #

data Input (api :: API) Source #

Instances
Interpreter (Event ch cont) m (Input api) (Stream api (Event ch cont) m) Source # 
Instance details

Defined in Data.Morpheus.Server.Deriving.Interpreter

Methods

interpreter :: (Monad m, RootResolverConstraint m (Event ch cont) query mut sub) => RootResolver m (Event ch cont) query mut sub -> Input api -> Stream api (Event ch cont) m Source #

debugInterpreter :: (Monad m, RootResolverConstraint m (Event ch cont) query mut sub) => RootResolver m (Event ch cont) query mut sub -> Input api -> Stream api (Event ch cont) m Source #

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

Instances
Interpreter (Event ch cont) m (Input api) (Stream api (Event ch cont) m) Source # 
Instance details

Defined in Data.Morpheus.Server.Deriving.Interpreter

Methods

interpreter :: (Monad m, RootResolverConstraint m (Event ch cont) query mut sub) => RootResolver m (Event ch cont) query mut sub -> Input api -> Stream api (Event ch cont) m Source #

debugInterpreter :: (Monad m, RootResolverConstraint m (Event ch cont) query mut sub) => RootResolver m (Event ch cont) query mut sub -> Input api -> Stream api (Event ch cont) 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 = Flexible (Resolver SUBSCRIPTION e m) a 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 OUT a) => Proxy a -> (TypeName, TypeUpdater) Source #