morpheus-graphql-0.1.1: Morpheus GraphQL

Safe HaskellNone
LanguageHaskell2010

Data.Morpheus.Types

Description

GQL Types

Synopsis

Documentation

gqlResolver :: m (Either String a) -> Resolver m a Source #

GraphQL Resolver

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 Resolver = ExceptT String Source #

Resolver Monad Transformer

type ResM = Resolver IO Source #

Monad IO resolver without GraphQL effect

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 ..."
 

Minimal complete definition

Nothing

Methods

description :: Proxy a -> Text Source #

Instances
GQLType Bool Source # 
Instance details

Defined in Data.Morpheus.Types.GQLType

GQLType Float Source # 
Instance details

Defined in Data.Morpheus.Types.GQLType

GQLType Int Source # 
Instance details

Defined in Data.Morpheus.Types.GQLType

GQLType Text Source # 
Instance details

Defined in Data.Morpheus.Types.GQLType

GQLType ID Source # 
Instance details

Defined in Data.Morpheus.Types.ID

Methods

description :: Proxy ID -> Text Source #

__typeName :: Proxy ID -> Text

__typeFingerprint :: Proxy ID -> DataFingerprint

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

Defined in Data.Morpheus.Types.GQLType

Methods

description :: Proxy [a] -> Text Source #

__typeName :: Proxy [a] -> Text

__typeFingerprint :: Proxy [a] -> DataFingerprint

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

Defined in Data.Morpheus.Types.GQLType

Methods

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

__typeName :: Proxy (Maybe a) -> Text

__typeFingerprint :: Proxy (Maybe a) -> DataFingerprint

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

Defined in Data.Morpheus.Types.GQLType

Methods

description :: Proxy (Set a) -> Text Source #

__typeName :: Proxy (Set a) -> Text

__typeFingerprint :: Proxy (Set a) -> DataFingerprint

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

Defined in Data.Morpheus.Types.GQLType

Methods

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

__typeName :: Proxy (a, b) -> Text

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

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 Source #

GraphQL HTTP Request Body

Constructors

GQLRequest 

Fields

Instances
Show GQLRequest Source # 
Instance details

Defined in Data.Morpheus.Types.IO

Generic GQLRequest Source # 
Instance details

Defined in Data.Morpheus.Types.IO

Associated Types

type Rep GQLRequest :: Type -> Type #

FromJSON GQLRequest Source # 
Instance details

Defined in Data.Morpheus.Types.IO

Interpreter (GQLRequest -> m GQLResponse) m Source # 
Instance details

Defined in Data.Morpheus.Interpreter

Methods

interpreter :: (Monad m, RootResCon m a b c) => GQLRootResolver m a b c -> GQLRequest -> m GQLResponse Source #

type Rep GQLRequest Source # 
Instance details

Defined in Data.Morpheus.Types.IO

data GQLResponse Source #

GraphQL Response

Constructors

Data Value 
Errors [JSONError] 
Instances
Show GQLResponse Source # 
Instance details

Defined in Data.Morpheus.Types.IO

Generic GQLResponse Source # 
Instance details

Defined in Data.Morpheus.Types.IO

Associated Types

type Rep GQLResponse :: Type -> Type #

ToJSON GQLResponse Source # 
Instance details

Defined in Data.Morpheus.Types.IO

Interpreter (GQLRequest -> m GQLResponse) m Source # 
Instance details

Defined in Data.Morpheus.Interpreter

Methods

interpreter :: (Monad m, RootResCon m a b c) => GQLRootResolver m a b c -> GQLRequest -> m GQLResponse Source #

type Rep GQLResponse Source # 
Instance details

Defined in Data.Morpheus.Types.IO

newtype ID Source #

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

Constructors

ID 

Fields

Instances
Generic ID Source # 
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 #

GQLScalar ID Source # 
Instance details

Defined in Data.Morpheus.Types.ID

GQLType ID Source # 
Instance details

Defined in Data.Morpheus.Types.ID

Methods

description :: Proxy ID -> Text Source #

__typeName :: Proxy ID -> Text

__typeFingerprint :: Proxy ID -> DataFingerprint

type Rep ID Source # 
Instance details

Defined in Data.Morpheus.Types.ID

type Rep ID = D1 (MetaData "ID" "Data.Morpheus.Types.ID" "morpheus-graphql-0.1.1-F6U2uttoPzk7pexbpDDUMQ" 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.Types.ID

type KIND ID = SCALAR

data ScalarValue Source #

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

Instances
Show ScalarValue Source # 
Instance details

Defined in Data.Morpheus.Types.Internal.Value

Generic ScalarValue Source # 
Instance details

Defined in Data.Morpheus.Types.Internal.Value

Associated Types

type Rep ScalarValue :: Type -> Type #

ToJSON ScalarValue Source # 
Instance details

Defined in Data.Morpheus.Types.Internal.Value

type Rep ScalarValue Source # 
Instance details

Defined in Data.Morpheus.Types.Internal.Value

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.

Constructors

GQLRootResolver 

Fields