module Data.Morpheus.App.Internal.Resolving.NamedResolver ( runResolverMap, ) where import Data.Morpheus.App.Internal.Resolving.Event (EventHandler (Channel)) import Data.Morpheus.App.Internal.Resolving.ResolveValue ( resolveRef, ) import Data.Morpheus.App.Internal.Resolving.Resolver (LiftOperation, Resolver, ResponseStream, runResolver) import Data.Morpheus.App.Internal.Resolving.ResolverState ( ResolverContext (..), ResolverState, ) import Data.Morpheus.App.Internal.Resolving.Types ( NamedResolverRef (..), ResolverMap, ) import Data.Morpheus.Types.Internal.AST ( Selection (..), SelectionContent (..), SelectionSet, TypeName, VALID, ValidValue, Value (..), ) runResolverMap :: (Monad m, LiftOperation o) => Maybe (Selection VALID -> ResolverState (Channel e)) -> TypeName -> ResolverMap (Resolver o e m) -> ResolverContext -> SelectionSet VALID -> ResponseStream e m ValidValue runResolverMap :: forall (m :: * -> *) (o :: OperationType) e. (Monad m, LiftOperation o) => Maybe (Selection VALID -> ResolverState (Channel e)) -> TypeName -> ResolverMap (Resolver o e m) -> ResolverContext -> SelectionSet VALID -> ResponseStream e m ValidValue runResolverMap Maybe (Selection VALID -> ResolverState (Channel e)) channels TypeName name ResolverMap (Resolver o e m) res ResolverContext ctx SelectionSet VALID selection = forall (m :: * -> *) event (o :: OperationType). Monad m => Maybe (Selection VALID -> ResolverState (Channel event)) -> Resolver o event m ValidValue -> ResolverContext -> ResponseStream event m ValidValue runResolver Maybe (Selection VALID -> ResolverState (Channel e)) channels Resolver o e m ValidValue resolvedValue ResolverContext ctx where resolvedValue :: Resolver o e m ValidValue resolvedValue = forall (m :: * -> *). (MonadError GQLError m, MonadReader ResolverContext m) => ResolverMap m -> NamedResolverRef -> SelectionContent VALID -> m ValidValue resolveRef ResolverMap (Resolver o e m) res (TypeName -> ValidValue -> NamedResolverRef NamedResolverRef TypeName name forall (stage :: Stage). Value stage Null) (forall (s :: Stage). SelectionSet s -> SelectionContent s SelectionSet SelectionSet VALID selection)