{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE NoImplicitPrelude #-}
module Data.Morpheus.Types
( GQLType (..),
EncodeScalar (..),
EncodeWrapper (..),
DecodeScalar (..),
DecodeWrapper (..),
GQLRequest (..),
GQLResponse (..),
ID (..),
ScalarValue (..),
RootResolver (..),
constRes,
Undefined,
Resolver,
QUERY,
MUTATION,
SUBSCRIPTION,
lift,
liftEither,
WithOperation,
publish,
subscribe,
ResolverContext (..),
ResolverO,
ComposedResolver,
ResolverQ,
ResolverM,
ResolverS,
SubscriptionField,
App,
RenderGQL,
render,
TypeGuard (..),
Arg (..),
NamedResolvers (..),
defaultRootResolver,
Prefixes (..),
VisitType (..),
VisitField (..),
Describe (..),
VisitEnum (..),
typeDirective,
fieldDirective,
enumDirective,
GQLDirective (..),
Deprecated (..),
DropNamespace (..),
Rename (..),
DefaultValue (..),
GQLError,
MonadError,
DirectiveLocation (..),
)
where
import Control.Monad.Except (MonadError (..))
import Data.Morpheus.Server.Resolvers
import Data.Morpheus.Server.Types
( App,
Arg (..),
DecodeScalar (..),
DecodeWrapper (..),
DefaultValue (..),
Deprecated (..),
Describe (..),
DirectiveLocation (..),
DropNamespace (..),
EncodeScalar (..),
EncodeWrapper (..),
GQLDirective (..),
GQLRequest (..),
GQLResponse (..),
GQLType (..),
ID (..),
MUTATION,
Prefixes (..),
QUERY,
Rename (..),
RenderGQL,
Resolver,
ResolverContext (..),
SUBSCRIPTION,
ScalarValue (..),
SubscriptionField,
TypeGuard (..),
Undefined,
VisitEnum (..),
VisitField (..),
VisitType (..),
WithOperation,
enumDirective,
fieldDirective,
render,
subscribe,
typeDirective,
)
import Data.Morpheus.Types.Internal.AST (GQLError)
import Relude hiding (Undefined)
liftEither :: (MonadTrans t, Monad (t m), MonadError GQLError (t m)) => Monad m => m (Either String a) -> t m a
liftEither :: forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad (t m), MonadError GQLError (t m), Monad m) =>
m (Either String a) -> t m a
liftEither m (Either String a)
x = forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift m (Either String a)
x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either (forall e (m :: * -> *) a. MonadError e m => e -> m a
throwError forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. IsString a => String -> a
fromString) forall (f :: * -> *) a. Applicative f => a -> f a
pure