{-# LANGUAGE CPP #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE NoImplicitPrelude #-}
module Data.Morpheus.Server
( httpPlayground,
compileTimeSchemaValidation,
printSchema,
RootResolverConstraint,
interpreter,
debugInterpreter,
App,
deriveApp,
runApp,
withDebugger,
)
where
import Data.ByteString.Lazy.Char8
( ByteString,
pack,
)
import Data.Morpheus.App
( App (..),
MapAPI,
runApp,
withDebugger,
)
import Data.Morpheus.App.Internal.Resolving
( resultOr,
)
import Data.Morpheus.Core
( render,
)
import Data.Morpheus.Server.Deriving.App
( RootResolverConstraint,
deriveApp,
deriveSchema,
)
import Data.Morpheus.Server.Deriving.Schema
( compileTimeSchemaValidation,
)
import Data.Morpheus.Server.Playground
( httpPlayground,
)
import Data.Morpheus.Server.Resolvers (RootResolver)
import Relude hiding (ByteString)
printSchema ::
RootResolverConstraint m event query mut sub =>
proxy (RootResolver m event query mut sub) ->
ByteString
printSchema :: forall (m :: * -> *) event (query :: (* -> *) -> *)
(mut :: (* -> *) -> *) (sub :: (* -> *) -> *) (proxy :: * -> *).
RootResolverConstraint m event query mut sub =>
proxy (RootResolver m event query mut sub) -> ByteString
printSchema =
forall err a' a.
(NonEmpty err -> a') -> (a -> a') -> Result err a -> a'
resultOr ([Char] -> ByteString
pack forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall b a. (Show a, IsString b) => a -> b
show) forall a. RenderGQL a => a -> ByteString
render
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall {k1} {k2} {k3}
(root :: k1
-> k2
-> ((* -> *) -> *)
-> ((* -> *) -> *)
-> ((* -> *) -> *)
-> k3)
(f :: k3 -> *) (m :: k1) (e :: k2) (qu :: (* -> *) -> *)
(mu :: (* -> *) -> *) (su :: (* -> *) -> *).
SCHEMA qu mu su =>
f (root m e qu mu su) -> GQLResult (Schema CONST)
deriveSchema
interpreter ::
(MapAPI a b, RootResolverConstraint m e query mut sub) =>
RootResolver m e query mut sub ->
a ->
m b
interpreter :: forall a b (m :: * -> *) e (query :: (* -> *) -> *)
(mut :: (* -> *) -> *) (sub :: (* -> *) -> *).
(MapAPI a b, RootResolverConstraint m e query mut sub) =>
RootResolver m e query mut sub -> a -> m b
interpreter = forall a b (m :: * -> *) e.
(MapAPI a b, Monad m) =>
App e m -> a -> m b
runApp forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: (* -> *)
-> * -> ((* -> *) -> *) -> ((* -> *) -> *) -> ((* -> *) -> *) -> *)
(m :: * -> *) event (qu :: (* -> *) -> *) (mu :: (* -> *) -> *)
(su :: (* -> *) -> *).
DeriveApp f m event qu mu su =>
f m event qu mu su -> App event m
deriveApp
debugInterpreter ::
(MapAPI a b, RootResolverConstraint m e query mut sub) =>
RootResolver m e query mut sub ->
a ->
m b
debugInterpreter :: forall a b (m :: * -> *) e (query :: (* -> *) -> *)
(mut :: (* -> *) -> *) (sub :: (* -> *) -> *).
(MapAPI a b, RootResolverConstraint m e query mut sub) =>
RootResolver m e query mut sub -> a -> m b
debugInterpreter = forall a b (m :: * -> *) e.
(MapAPI a b, Monad m) =>
App e m -> a -> m b
runApp forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall e (m :: * -> *). App e m -> App e m
withDebugger forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: (* -> *)
-> * -> ((* -> *) -> *) -> ((* -> *) -> *) -> ((* -> *) -> *) -> *)
(m :: * -> *) event (qu :: (* -> *) -> *) (mu :: (* -> *) -> *)
(su :: (* -> *) -> *).
DeriveApp f m event qu mu su =>
f m event qu mu su -> App event m
deriveApp