{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE NoImplicitPrelude #-}

module Data.Morpheus.CodeGen.Server
  ( printServerTypeDefinitions,
    PrinterConfig (..),
  )
where

import Data.ByteString.Lazy.Char8 (ByteString)
import Data.Morpheus.CodeGen.Internal.AST
  ( ServerTypeDefinition,
  )
import Data.Morpheus.CodeGen.Printing.Render
  ( renderDocument,
  )
import Relude hiding (ByteString)

newtype PrinterConfig = PrinterConfig
  { PrinterConfig -> String
moduleName :: String
  }

printServerTypeDefinitions :: PrinterConfig -> [ServerTypeDefinition] -> ByteString
printServerTypeDefinitions :: PrinterConfig -> [ServerTypeDefinition] -> ByteString
printServerTypeDefinitions PrinterConfig {String
moduleName :: String
moduleName :: PrinterConfig -> String
moduleName} = String -> [ServerTypeDefinition] -> ByteString
renderDocument String
moduleName