graphql-client-1.2.4: A client for Haskell programs to query a GraphQL API
MaintainerBrandon Chinn <brandonchinn178@gmail.com>
Stabilityexperimental
Portabilityportable
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.GraphQL.Monad

Description

Defines the MonadGraphQLQuery type class to query GraphQL APIs. Also provides the GraphQLQueryT monad transformer that can be added to a transformer stack to implement the type class, and the runQuerySafeIO function to manually implement it yourself.

Synopsis

MonadGraphQLQuery API

class Monad m => MonadGraphQLQuery m where Source #

A type class for monads that can run GraphQL queries.

Methods

runQuerySafe :: (GraphQLQuery query, schema ~ ResultSchema query) => query -> m (GraphQLResult (Object schema)) Source #

Run the given query and return the GraphQLResult.

Instances

Instances details
MonadIO m => MonadGraphQLQuery (GraphQLQueryT m) Source # 
Instance details

Defined in Data.GraphQL.Monad

Methods

runQuerySafe :: forall query (schema :: Schema). (GraphQLQuery query, schema ~ ResultSchema query) => query -> GraphQLQueryT m (GraphQLResult (Object schema)) Source #

Monad m => MonadGraphQLQuery (MockQueryT m) Source # 
Instance details

Defined in Data.GraphQL.TestUtils

Methods

runQuerySafe :: forall query (schema :: Schema). (GraphQLQuery query, schema ~ ResultSchema query) => query -> MockQueryT m (GraphQLResult (Object schema)) Source #

MonadGraphQLQuery m => MonadGraphQLQuery (MaybeT m) Source # 
Instance details

Defined in Data.GraphQL.Monad.Class

Methods

runQuerySafe :: forall query (schema :: Schema). (GraphQLQuery query, schema ~ ResultSchema query) => query -> MaybeT m (GraphQLResult (Object schema)) Source #

MonadGraphQLQuery m => MonadGraphQLQuery (ExceptT e m) Source # 
Instance details

Defined in Data.GraphQL.Monad.Class

Methods

runQuerySafe :: forall query (schema :: Schema). (GraphQLQuery query, schema ~ ResultSchema query) => query -> ExceptT e m (GraphQLResult (Object schema)) Source #

MonadGraphQLQuery m => MonadGraphQLQuery (IdentityT m) Source # 
Instance details

Defined in Data.GraphQL.Monad.Class

Methods

runQuerySafe :: forall query (schema :: Schema). (GraphQLQuery query, schema ~ ResultSchema query) => query -> IdentityT m (GraphQLResult (Object schema)) Source #

MonadGraphQLQuery m => MonadGraphQLQuery (ReaderT r m) Source # 
Instance details

Defined in Data.GraphQL.Monad.Class

Methods

runQuerySafe :: forall query (schema :: Schema). (GraphQLQuery query, schema ~ ResultSchema query) => query -> ReaderT r m (GraphQLResult (Object schema)) Source #

MonadGraphQLQuery m => MonadGraphQLQuery (StateT s m) Source # 
Instance details

Defined in Data.GraphQL.Monad.Class

Methods

runQuerySafe :: forall query (schema :: Schema). (GraphQLQuery query, schema ~ ResultSchema query) => query -> StateT s m (GraphQLResult (Object schema)) Source #

MonadGraphQLQuery m => MonadGraphQLQuery (StateT s m) Source # 
Instance details

Defined in Data.GraphQL.Monad.Class

Methods

runQuerySafe :: forall query (schema :: Schema). (GraphQLQuery query, schema ~ ResultSchema query) => query -> StateT s m (GraphQLResult (Object schema)) Source #

(Monoid w, MonadGraphQLQuery m) => MonadGraphQLQuery (WriterT w m) Source # 
Instance details

Defined in Data.GraphQL.Monad.Class

Methods

runQuerySafe :: forall query (schema :: Schema). (GraphQLQuery query, schema ~ ResultSchema query) => query -> WriterT w m (GraphQLResult (Object schema)) Source #

(Monoid w, MonadGraphQLQuery m) => MonadGraphQLQuery (WriterT w m) Source # 
Instance details

Defined in Data.GraphQL.Monad.Class

Methods

runQuerySafe :: forall query (schema :: Schema). (GraphQLQuery query, schema ~ ResultSchema query) => query -> WriterT w m (GraphQLResult (Object schema)) Source #

(Monoid w, MonadGraphQLQuery m) => MonadGraphQLQuery (RWST r w s m) Source # 
Instance details

Defined in Data.GraphQL.Monad.Class

Methods

runQuerySafe :: forall query (schema :: Schema). (GraphQLQuery query, schema ~ ResultSchema query) => query -> RWST r w s m (GraphQLResult (Object schema)) Source #

(Monoid w, MonadGraphQLQuery m) => MonadGraphQLQuery (RWST r w s m) Source # 
Instance details

Defined in Data.GraphQL.Monad.Class

Methods

runQuerySafe :: forall query (schema :: Schema). (GraphQLQuery query, schema ~ ResultSchema query) => query -> RWST r w s m (GraphQLResult (Object schema)) Source #

runQuery :: (MonadIO m, MonadGraphQLQuery m, GraphQLQuery query, schema ~ ResultSchema query) => query -> m (Object schema) Source #

Run the given query and returns the result, erroring if the query returned errors.

runQuerySafeIO :: (GraphQLQuery query, schema ~ ResultSchema query) => GraphQLManager -> query -> IO (GraphQLResult (Object schema)) Source #

Execute a GraphQL query with the given GraphQLManager.

GraphQLSettings

data GraphQLSettings Source #

The settings for initializing a GraphQLManager.

Constructors

GraphQLSettings 

Fields

defaultGraphQLSettings :: GraphQLSettings Source #

Default settings for GraphQLSettings. Requires url field to be overridden.

Example usage:

>>> defaultGraphQLSettings
...   { url = "https://api.github.com/graphql"
...   , modifyReq = \\req -> req
...       { requestHeaders =
...           (hAuthorization, "bearer my_github_token") : requestHeaders req
...       }
...   }

GraphQLManager

data GraphQLManager Source #

The manager for running GraphQL queries.

GraphQLQueryT

data GraphQLQueryT m a Source #

The monad transformer type that can be used to run GraphQL queries.

 newtype MyMonad a = MyMonad { unMyMonad :: GraphQLQueryT IO a }

 runMyMonad :: MyMonad a -> IO a
 runMyMonad = runGraphQLQueryT graphQLSettings . unMyMonad
   where
     graphQLSettings = defaultGraphQLSettings{url = "https://api.github.com/graphql"}
 

Instances

Instances details
MonadTrans GraphQLQueryT Source # 
Instance details

Defined in Data.GraphQL.Monad

Methods

lift :: Monad m => m a -> GraphQLQueryT m a #

MonadIO m => MonadIO (GraphQLQueryT m) Source # 
Instance details

Defined in Data.GraphQL.Monad

Methods

liftIO :: IO a -> GraphQLQueryT m a #

Applicative m => Applicative (GraphQLQueryT m) Source # 
Instance details

Defined in Data.GraphQL.Monad

Methods

pure :: a -> GraphQLQueryT m a #

(<*>) :: GraphQLQueryT m (a -> b) -> GraphQLQueryT m a -> GraphQLQueryT m b #

liftA2 :: (a -> b -> c) -> GraphQLQueryT m a -> GraphQLQueryT m b -> GraphQLQueryT m c #

(*>) :: GraphQLQueryT m a -> GraphQLQueryT m b -> GraphQLQueryT m b #

(<*) :: GraphQLQueryT m a -> GraphQLQueryT m b -> GraphQLQueryT m a #

Functor m => Functor (GraphQLQueryT m) Source # 
Instance details

Defined in Data.GraphQL.Monad

Methods

fmap :: (a -> b) -> GraphQLQueryT m a -> GraphQLQueryT m b #

(<$) :: a -> GraphQLQueryT m b -> GraphQLQueryT m a #

Monad m => Monad (GraphQLQueryT m) Source # 
Instance details

Defined in Data.GraphQL.Monad

Methods

(>>=) :: GraphQLQueryT m a -> (a -> GraphQLQueryT m b) -> GraphQLQueryT m b #

(>>) :: GraphQLQueryT m a -> GraphQLQueryT m b -> GraphQLQueryT m b #

return :: a -> GraphQLQueryT m a #

MonadIO m => MonadGraphQLQuery (GraphQLQueryT m) Source # 
Instance details

Defined in Data.GraphQL.Monad

Methods

runQuerySafe :: forall query (schema :: Schema). (GraphQLQuery query, schema ~ ResultSchema query) => query -> GraphQLQueryT m (GraphQLResult (Object schema)) Source #

MonadUnliftIO m => MonadUnliftIO (GraphQLQueryT m) Source # 
Instance details

Defined in Data.GraphQL.Monad

Methods

withRunInIO :: ((forall a. GraphQLQueryT m a -> IO a) -> IO b) -> GraphQLQueryT m b #

runGraphQLQueryT :: MonadIO m => GraphQLSettings -> GraphQLQueryT m a -> m a Source #

Run the GraphQLQueryT monad transformer.