{-# LANGUAGE NoImplicitPrelude #-} module Data.Morpheus.CodeGen.Server ( CodeGenConfig (..), PrinterConfig (..), gqlDocument, importServerTypeDefinitions, ) where import Data.ByteString.Lazy.Char8 ( readFile, ) import Data.FileEmbed (makeRelativeToProject) import Data.Morpheus.CodeGen.Server.Internal.AST ( CodeGenConfig (..), ) import Data.Morpheus.CodeGen.Server.Printing.TH ( compileDocument, gqlDocument, ) import Language.Haskell.TH (Dec, Q, runIO) import Language.Haskell.TH.Syntax ( qAddDependentFile, ) import Relude hiding (ByteString, readFile) newtype PrinterConfig = PrinterConfig { moduleName :: String } importServerTypeDefinitions :: CodeGenConfig -> FilePath -> Q [Dec] importServerTypeDefinitions ctx rawSrc = do src <- makeRelativeToProject rawSrc qAddDependentFile src runIO (readFile src) >>= compileDocument ctx