{-# 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 { PrinterConfig -> String moduleName :: String } importServerTypeDefinitions :: CodeGenConfig -> FilePath -> Q [Dec] importServerTypeDefinitions :: CodeGenConfig -> String -> Q [Dec] importServerTypeDefinitions CodeGenConfig ctx String rawSrc = do String src <- String -> Q String makeRelativeToProject String rawSrc forall (m :: * -> *). Quasi m => String -> m () qAddDependentFile String src forall a. IO a -> Q a runIO (String -> IO ByteString readFile String src) forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= CodeGenConfig -> ByteString -> Q [Dec] compileDocument CodeGenConfig ctx