{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE NoImplicitPrelude #-} module Data.Morpheus.Document ( toGraphQLDocument, gqlDocument, importGQLDocument, importGQLDocumentWithNamespace, RootResolverConstraint, ) where import Data.ByteString.Lazy.Char8 ( ByteString, readFile, ) import Data.Morpheus.CodeGen.Internal.AST ( CodeGenConfig (..), ) import Data.Morpheus.Server ( RootResolverConstraint, printSchema, ) import Data.Morpheus.Server.TH.Compile ( compileDocument, gqlDocument, ) import Data.Morpheus.Types (RootResolver) import Language.Haskell.TH import Language.Haskell.TH.Syntax ( qAddDependentFile, ) import Relude hiding (ByteString, readFile) importDeclarations :: CodeGenConfig -> FilePath -> Q [Dec] importDeclarations :: CodeGenConfig -> FilePath -> Q [Dec] importDeclarations CodeGenConfig ctx FilePath src = do FilePath -> Q () forall (m :: * -> *). Quasi m => FilePath -> m () qAddDependentFile FilePath src IO ByteString -> Q ByteString forall a. IO a -> Q a runIO (FilePath -> IO ByteString readFile FilePath src) Q ByteString -> (ByteString -> Q [Dec]) -> Q [Dec] forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= CodeGenConfig -> ByteString -> Q [Dec] compileDocument CodeGenConfig ctx importGQLDocument :: FilePath -> Q [Dec] importGQLDocument :: FilePath -> Q [Dec] importGQLDocument = CodeGenConfig -> FilePath -> Q [Dec] importDeclarations CodeGenConfig :: Bool -> CodeGenConfig CodeGenConfig {namespace :: Bool namespace = Bool False} importGQLDocumentWithNamespace :: FilePath -> Q [Dec] importGQLDocumentWithNamespace :: FilePath -> Q [Dec] importGQLDocumentWithNamespace = CodeGenConfig -> FilePath -> Q [Dec] importDeclarations CodeGenConfig :: Bool -> CodeGenConfig CodeGenConfig {namespace :: Bool namespace = Bool True} {-# DEPRECATED toGraphQLDocument "use Data.Morpheus.Server.printSchema" #-} toGraphQLDocument :: RootResolverConstraint m event query mut sub => proxy (RootResolver m event query mut sub) -> ByteString toGraphQLDocument :: proxy (RootResolver m event query mut sub) -> ByteString toGraphQLDocument = proxy (RootResolver m event query mut sub) -> ByteString forall (m :: * -> *) event (query :: (* -> *) -> *) (mut :: (* -> *) -> *) (sub :: (* -> *) -> *) (proxy :: * -> *). RootResolverConstraint m event query mut sub => proxy (RootResolver m event query mut sub) -> ByteString printSchema