{-# 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,
)
where
import Data.ByteString.Lazy.Char8
( ByteString,
pack,
)
import Data.Morpheus.App.Internal.Resolving
( resultOr,
)
import Data.Morpheus.Core
( render,
)
import Data.Morpheus.Server.Deriving.App
( RootResolverConstraint,
deriveSchema,
)
import Data.Morpheus.Server.Deriving.Schema
( compileTimeSchemaValidation,
)
import Data.Morpheus.Server.Playground
( httpPlayground,
)
import Data.Morpheus.Types (RootResolver)
import Relude hiding (ByteString)
printSchema ::
RootResolverConstraint m event query mut sub =>
proxy (RootResolver m event query mut sub) ->
ByteString
printSchema :: proxy (RootResolver m event query mut sub) -> ByteString
printSchema =
(NonEmpty GQLError -> ByteString)
-> (Schema CONST -> ByteString)
-> Result GQLError (Schema CONST)
-> ByteString
forall err a' a.
(NonEmpty err -> a') -> (a -> a') -> Result err a -> a'
resultOr ([Char] -> ByteString
pack ([Char] -> ByteString)
-> (NonEmpty GQLError -> [Char]) -> NonEmpty GQLError -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmpty GQLError -> [Char]
forall b a. (Show a, IsString b) => a -> b
show) Schema CONST -> ByteString
forall a. RenderGQL a => a -> ByteString
render
(Result GQLError (Schema CONST) -> ByteString)
-> (proxy (RootResolver m event query mut sub)
-> Result GQLError (Schema CONST))
-> proxy (RootResolver m event query mut sub)
-> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. proxy (RootResolver m event query mut sub)
-> Result GQLError (Schema CONST)
forall k
(root :: (* -> *)
-> * -> ((* -> *) -> *) -> ((* -> *) -> *) -> ((* -> *) -> *) -> k)
(proxy :: k -> *) (m :: * -> *) e (query :: (* -> *) -> *)
(mut :: (* -> *) -> *) (subs :: (* -> *) -> *).
SchemaConstraints e m query mut subs =>
proxy (root m e query mut subs) -> Result GQLError (Schema CONST)
deriveSchema