Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- data Resolver (o :: OperationType) event (m :: Type -> Type) value
- class LiftOperation (o :: OperationType)
- runRootResolverValue :: Monad m => RootResolverValue e m -> ResolverContext -> ResponseStream e m (Value VALID)
- lift :: (MonadTrans t, Monad m) => m a -> t m a
- type Failure = MonadError
- data ResponseEvent event (m :: Type -> Type)
- = Publish event
- | Subscribe {
- subChannel :: Channel event
- subRes :: event -> m GQLResponse
- type ResponseStream event (m :: Type -> Type) = ResultT (ResponseEvent event m) m
- cleanEvents :: forall (m :: Type -> Type) e a e'. Functor m => ResultT e m a -> ResultT e' m a
- data Result err a
- newtype ResultT event (m :: Type -> Type) a = ResultT {
- runResultT :: m (Result GQLError ([event], a))
- newtype ObjectTypeResolver m = ObjectTypeResolver {
- objectFields :: HashMap FieldName (m (ResolverValue m))
- type WithOperation (o :: OperationType) = LiftOperation o
- class PushEvents e (m :: Type -> Type) where
- pushEvents :: [e] -> m ()
- subscribe :: Monad m => Channel e -> Resolver QUERY e m (e -> Resolver SUBSCRIPTION e m a) -> SubscriptionField (Resolver SUBSCRIPTION e m a)
- data ResolverContext = ResolverContext {}
- unsafeInternalContext :: (Monad m, LiftOperation o) => Resolver o e m ResolverContext
- data RootResolverValue e m
- = RootResolverValue {
- queryResolver :: ResolverState (ObjectTypeResolver (Resolver QUERY e m))
- mutationResolver :: ResolverState (ObjectTypeResolver (Resolver MUTATION e m))
- subscriptionResolver :: ResolverState (ObjectTypeResolver (Resolver SUBSCRIPTION e m))
- channelMap :: Maybe (Selection VALID -> ResolverState (Channel e))
- | NamedResolversValue {
- queryResolverMap :: ResolverMap (Resolver QUERY e m)
- = RootResolverValue {
- resultOr :: (NonEmpty err -> a') -> (a -> a') -> Result err a -> a'
- withArguments :: (LiftOperation o, Monad m) => (Arguments VALID -> Resolver o e m a) -> Resolver o e m a
- mkBoolean :: Bool -> ResolverValue m
- mkFloat :: Double -> ResolverValue m
- mkInt :: Int -> ResolverValue m
- mkList :: [ResolverValue m] -> ResolverValue m
- mkNull :: ResolverValue m
- mkString :: Text -> ResolverValue m
- mkValue :: (MonadReader ResolverContext f, MonadReader ResolverContext m) => Value -> f (ResolverValue m)
- mkEnum :: TypeName -> ResolverValue m
- mkUnion :: Monad m => TypeName -> [ResolverEntry m] -> ResolverValue m
- mkObject :: TypeName -> [ResolverEntry m] -> ResolverValue m
- data SubscriptionField (a :: Type) where
- SubscriptionField :: {..} -> SubscriptionField a
- getArguments :: (LiftOperation o, Monad m) => Resolver o e m (Arguments VALID)
- type ResolverState = ResolverStateT () Identity
- liftResolverState :: (LiftOperation o, Monad m) => ResolverState a -> Resolver o e m a
- type ResolverEntry m = (FieldName, m (ResolverValue m))
- sortErrors :: Result GQLError a -> Result GQLError a
- class EventHandler e where
- type Channel e
- getChannels :: e -> [Channel e]
- requireObject :: MonadError GQLError f => ResolverValue m -> f (ObjectTypeResolver m)
- data ResolverValue (m :: Type -> Type)
- = ResNull
- | ResScalar ScalarValue
- | ResList [ResolverValue m]
- | ResEnum TypeName
- | ResObject (Maybe TypeName) (ObjectTypeResolver m)
- | ResRef (m NamedResolverRef)
- | ResLazy (m (ResolverValue m))
- data NamedResolver (m :: Type -> Type) = NamedResolver {
- resolverName :: TypeName
- resolver :: ValidValue -> m (NamedResolverResult m)
- data NamedResolverResult (m :: Type -> Type)
- data NamedResolverRef = NamedResolverRef {}
Documentation
data Resolver (o :: OperationType) event (m :: Type -> Type) value Source #
Instances
class LiftOperation (o :: OperationType) Source #
packResolver
Instances
LiftOperation MUTATION Source # | |
LiftOperation QUERY Source # | |
LiftOperation SUBSCRIPTION Source # | |
Defined in Data.Morpheus.App.Internal.Resolving.Resolver packResolver :: forall (m :: Type -> Type) e a. Monad m => ResolverStateT e m a -> Resolver SUBSCRIPTION e m a |
runRootResolverValue :: Monad m => RootResolverValue e m -> ResolverContext -> ResponseStream e m (Value VALID) Source #
lift :: (MonadTrans t, Monad m) => m a -> t m a #
Lift a computation from the argument monad to the constructed monad.
type Failure = MonadError #
data ResponseEvent event (m :: Type -> Type) Source #
Publish event | |
Subscribe | |
|
type ResponseStream event (m :: Type -> Type) = ResultT (ResponseEvent event m) m Source #
Instances
Bifunctor Result | |
MonadError er (Result er) | |
Defined in Data.Morpheus.Ext.Result throwError :: er -> Result er a # catchError :: Result er a -> (er -> Result er a) -> Result er a # | |
IsString err => MonadFail (Result err) | |
Defined in Data.Morpheus.Ext.Result | |
Applicative (Result er) | |
Functor (Result err) | |
Monad (Result er) | |
newtype ResultT event (m :: Type -> Type) a #
ResultT | |
|
Instances
Applicative m => PushEvents event (ResultT event m) | |
Defined in Data.Morpheus.Ext.Result pushEvents :: [event] -> ResultT event m () # | |
Monad m => MonadError GQLError (ResultT event m) | |
Defined in Data.Morpheus.Ext.Result throwError :: GQLError -> ResultT event m a # catchError :: ResultT event m a -> (GQLError -> ResultT event m a) -> ResultT event m a # | |
MonadTrans (ResultT event) | |
Defined in Data.Morpheus.Ext.Result | |
Applicative m => Applicative (ResultT event m) | |
Defined in Data.Morpheus.Ext.Result pure :: a -> ResultT event m a # (<*>) :: ResultT event m (a -> b) -> ResultT event m a -> ResultT event m b # liftA2 :: (a -> b -> c) -> ResultT event m a -> ResultT event m b -> ResultT event m c # (*>) :: ResultT event m a -> ResultT event m b -> ResultT event m b # (<*) :: ResultT event m a -> ResultT event m b -> ResultT event m a # | |
Functor m => Functor (ResultT event m) | |
Monad m => Monad (ResultT event m) | |
newtype ObjectTypeResolver m Source #
ObjectTypeResolver | |
|
Instances
(Monad m, Applicative f, MonadError GQLError m) => Merge f (ObjectTypeResolver m) Source # | |
Defined in Data.Morpheus.App.Internal.Resolving.Types merge :: ObjectTypeResolver m -> ObjectTypeResolver m -> f (ObjectTypeResolver m) # | |
Show (ObjectTypeResolver m) Source # | |
Defined in Data.Morpheus.App.Internal.Resolving.Types showsPrec :: Int -> ObjectTypeResolver m -> ShowS # show :: ObjectTypeResolver m -> String # showList :: [ObjectTypeResolver m] -> ShowS # |
type WithOperation (o :: OperationType) = LiftOperation o Source #
class PushEvents e (m :: Type -> Type) where #
pushEvents :: [e] -> m () #
Instances
Applicative m => PushEvents event (ResultT event m) | |
Defined in Data.Morpheus.Ext.Result pushEvents :: [event] -> ResultT event m () # | |
Monad m => PushEvents e (Resolver MUTATION e m) Source # | |
Defined in Data.Morpheus.App.Internal.Resolving.Resolver pushEvents :: [e] -> Resolver MUTATION e m () # |
subscribe :: Monad m => Channel e -> Resolver QUERY e m (e -> Resolver SUBSCRIPTION e m a) -> SubscriptionField (Resolver SUBSCRIPTION e m a) Source #
data ResolverContext Source #
ResolverContext | |
|
Instances
Show ResolverContext Source # | |
Defined in Data.Morpheus.App.Internal.Resolving.ResolverState showsPrec :: Int -> ResolverContext -> ShowS # show :: ResolverContext -> String # showList :: [ResolverContext] -> ShowS # | |
(LiftOperation o, Monad m) => MonadReader ResolverContext (Resolver o e m) Source # | |
Defined in Data.Morpheus.App.Internal.Resolving.Resolver 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 # |
unsafeInternalContext :: (Monad m, LiftOperation o) => Resolver o e m ResolverContext Source #
Deprecated: use asks
A function to return the internal ResolverContext
within a resolver's monad.
Using the ResolverContext
itself is unsafe because it exposes 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 RootResolverValue e m Source #
RootResolverValue | |
| |
NamedResolversValue | |
|
Instances
Monad m => FromJSON (RootResolverValue e m) Source # | |
Defined in Data.Morpheus.App.Internal.Resolving.RootResolverValue parseJSON :: Value -> Parser (RootResolverValue e m) # parseJSONList :: Value -> Parser [RootResolverValue e m] # |
withArguments :: (LiftOperation o, Monad m) => (Arguments VALID -> Resolver o e m a) -> Resolver o e m a Source #
mkBoolean :: Bool -> ResolverValue m Source #
mkFloat :: Double -> ResolverValue m Source #
mkInt :: Int -> ResolverValue m Source #
mkList :: [ResolverValue m] -> ResolverValue m Source #
mkNull :: ResolverValue m Source #
mkString :: Text -> ResolverValue m Source #
mkValue :: (MonadReader ResolverContext f, MonadReader ResolverContext m) => Value -> f (ResolverValue m) Source #
mkEnum :: TypeName -> ResolverValue m Source #
mkUnion :: Monad m => TypeName -> [ResolverEntry m] -> ResolverValue m Source #
mkObject :: TypeName -> [ResolverEntry m] -> ResolverValue m Source #
data SubscriptionField (a :: Type) where Source #
SubscriptionField | |
|
Instances
EncodeWrapper SubscriptionField Source # | |
Defined in Data.Morpheus.Types.GQLWrapper encodeWrapper :: Monad m => (a -> m (ResolverValue m)) -> SubscriptionField a -> m (ResolverValue m) Source # |
getArguments :: (LiftOperation o, Monad m) => Resolver o e m (Arguments VALID) Source #
type ResolverState = ResolverStateT () Identity Source #
liftResolverState :: (LiftOperation o, Monad m) => ResolverState a -> Resolver o e m a Source #
type ResolverEntry m = (FieldName, m (ResolverValue m)) Source #
requireObject :: MonadError GQLError f => ResolverValue m -> f (ObjectTypeResolver m) Source #
data ResolverValue (m :: Type -> Type) Source #
ResNull | |
ResScalar ScalarValue | |
ResList [ResolverValue m] | |
ResEnum TypeName | |
ResObject (Maybe TypeName) (ObjectTypeResolver m) | |
ResRef (m NamedResolverRef) | |
ResLazy (m (ResolverValue m)) |
Instances
(Monad f, MonadError GQLError f, Merge f (ObjectTypeResolver m)) => Merge f (ResolverValue m) Source # | |
Defined in Data.Morpheus.App.Internal.Resolving.Types merge :: ResolverValue m -> ResolverValue m -> f (ResolverValue m) # | |
IsString (ResolverValue m) Source # | |
Defined in Data.Morpheus.App.Internal.Resolving.Types fromString :: String -> ResolverValue m # | |
Show (ResolverValue m) Source # | |
Defined in Data.Morpheus.App.Internal.Resolving.Types showsPrec :: Int -> ResolverValue m -> ShowS # show :: ResolverValue m -> String # showList :: [ResolverValue m] -> ShowS # |
data NamedResolver (m :: Type -> Type) Source #
NamedResolver | |
|
Instances
KeyOf TypeName (NamedResolver m) Source # | |
Defined in Data.Morpheus.App.Internal.Resolving.Types keyOf :: NamedResolver m -> TypeName # | |
Show (NamedResolver m) Source # | |
Defined in Data.Morpheus.App.Internal.Resolving.Types showsPrec :: Int -> NamedResolver m -> ShowS # show :: NamedResolver m -> String # showList :: [NamedResolver m] -> ShowS # |
data NamedResolverResult (m :: Type -> Type) Source #
data NamedResolverRef Source #
Instances
Show NamedResolverRef Source # | |
Defined in Data.Morpheus.App.Internal.Resolving.Types showsPrec :: Int -> NamedResolverRef -> ShowS # show :: NamedResolverRef -> String # showList :: [NamedResolverRef] -> ShowS # |