morpheus-graphql-0.18.0: src/Data/Morpheus/Server.hs
{-# LANGUAGE CPP #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE NoImplicitPrelude #-}
-- | GraphQL Wai Server Applications
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)
-- | Generates schema.gql file from 'RootResolver'
printSchema ::
RootResolverConstraint m event query mut sub =>
proxy (RootResolver m event query mut sub) ->
ByteString
printSchema =
resultOr (pack . show) render
. deriveSchema