Safe Haskell | None |
---|---|
Language | Haskell2010 |
GQL Types
Synopsis
- gqlResolver :: m (Either String a) -> Resolver m a
- gqlEffectResolver :: Monad m => [c] -> EffectT m c (Either String a) -> Resolver (EffectT m c) a
- liftEffectResolver :: Monad m => [c] -> m (Either String a) -> Resolver (EffectT m c) a
- type Resolver = ExceptT String
- type ResM = Resolver IO
- type EffectM = Resolver (EffectT IO Text)
- class GQLType a where
- description :: Proxy a -> Text
- class GQLScalar a where
- parseValue :: ScalarValue -> Either Text a
- serialize :: a -> ScalarValue
- data GQLRequest = GQLRequest {}
- data GQLResponse
- newtype ID = ID {}
- data ScalarValue
- data GQLRootResolver m a b c = GQLRootResolver {
- queryResolver :: ResolveT m a
- mutationResolver :: ResolveT (EffectT m Text) b
- subscriptionResolver :: ResolveT (EffectT m Text) c
Documentation
gqlEffectResolver :: Monad m => [c] -> EffectT m c (Either String a) -> Resolver (EffectT m c) a Source #
GraphQL Resolver for mutation or subscription resolver , adds effect to normal resolver
liftEffectResolver :: Monad m => [c] -> m (Either String a) -> Resolver (EffectT m c) a Source #
lift Normal resolver inside Effect Resolver
type EffectM = Resolver (EffectT IO Text) Source #
Monad Resolver with GraphQL effects, used for communication between mutation and subscription
class GQLType a where Source #
GraphQL type, every graphQL type should have an instance of Generic
and GQLType
.
... deriving (Generic, GQLType)
if you want to add description
... deriving (Generic) instance GQLType ... where description = const "your description ..."
Nothing
description :: Proxy a -> Text Source #
Instances
class GQLScalar a where Source #
GraphQL Scalar
parseValue
and serialize
should be provided for every instances manually
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
Instances
data GQLRequest Source #
GraphQL HTTP Request Body
Instances
Show GQLRequest Source # | |
Defined in Data.Morpheus.Types.IO showsPrec :: Int -> GQLRequest -> ShowS # show :: GQLRequest -> String # showList :: [GQLRequest] -> ShowS # | |
Generic GQLRequest Source # | |
Defined in Data.Morpheus.Types.IO type Rep GQLRequest :: Type -> Type # from :: GQLRequest -> Rep GQLRequest x # to :: Rep GQLRequest x -> GQLRequest # | |
FromJSON GQLRequest Source # | |
Defined in Data.Morpheus.Types.IO parseJSON :: Value -> Parser GQLRequest # parseJSONList :: Value -> Parser [GQLRequest] # | |
Interpreter (GQLRequest -> m GQLResponse) m Source # | |
Defined in Data.Morpheus.Interpreter interpreter :: (Monad m, RootResCon m a b c) => GQLRootResolver m a b c -> GQLRequest -> m GQLResponse Source # | |
type Rep GQLRequest Source # | |
Defined in Data.Morpheus.Types.IO |
data GQLResponse Source #
GraphQL Response
Instances
Show GQLResponse Source # | |
Defined in Data.Morpheus.Types.IO showsPrec :: Int -> GQLResponse -> ShowS # show :: GQLResponse -> String # showList :: [GQLResponse] -> ShowS # | |
Generic GQLResponse Source # | |
Defined in Data.Morpheus.Types.IO type Rep GQLResponse :: Type -> Type # from :: GQLResponse -> Rep GQLResponse x # to :: Rep GQLResponse x -> GQLResponse # | |
ToJSON GQLResponse Source # | |
Defined in Data.Morpheus.Types.IO toJSON :: GQLResponse -> Value # toEncoding :: GQLResponse -> Encoding # toJSONList :: [GQLResponse] -> Value # toEncodingList :: [GQLResponse] -> Encoding # | |
Interpreter (GQLRequest -> m GQLResponse) m Source # | |
Defined in Data.Morpheus.Interpreter interpreter :: (Monad m, RootResCon m a b c) => GQLRootResolver m a b c -> GQLRequest -> m GQLResponse Source # | |
type Rep GQLResponse Source # | |
Defined in Data.Morpheus.Types.IO |
default GraphQL type,
parses only ScalarValue
and ScalarValue
values,
serialized always as ScalarValue
Instances
Generic ID Source # | |
GQLScalar ID Source # | |
Defined in Data.Morpheus.Types.ID parseValue :: ScalarValue -> Either Text ID Source # serialize :: ID -> ScalarValue Source # scalarValidator :: Proxy ID -> DataValidator | |
GQLType ID Source # | |
Defined in Data.Morpheus.Types.ID description :: Proxy ID -> Text Source # __typeName :: Proxy ID -> Text __typeFingerprint :: Proxy ID -> DataFingerprint | |
type Rep ID Source # | |
Defined in Data.Morpheus.Types.ID | |
type KIND ID Source # | |
Defined in Data.Morpheus.Types.ID |
data ScalarValue Source #
Primitive Values for GQLScalar: ScalarValue
, ScalarValue
, ScalarValue
, Boolean
.
for performance reason type Text
represents GraphQl ScalarValue
value
Instances
data GQLRootResolver m a b c 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 acn use () for it.
GQLRootResolver | |
|