module Data.Morpheus.Parser
( parseTypeDefinitions,
parseTypeSystemDefinition,
parseRequest,
parseRequestWith,
)
where
import Control.Monad ((>=>))
import Data.Morpheus.Internal.Utils
( fromElems,
)
import Data.Morpheus.Parsing.Document.TypeSystem (parseSchema)
import Data.Morpheus.Parsing.Request.Parser (parseGQL)
import Data.Morpheus.Types.IO
( GQLRequest (..),
)
import Data.Morpheus.Types.Internal.AST
( ANY,
GQLQuery (..),
Operation,
Schema (..),
TypeDefinition (..),
VALID,
VALIDATION_MODE (..),
)
import Data.Morpheus.Types.Internal.Resolving
( Eventless,
)
import Data.Morpheus.Validation.Document.Validation
( validatePartialDocument,
)
import Data.Morpheus.Validation.Query.Validation
( validateRequest,
)
import Data.Text (Text)
parseTypeSystemDefinition ::
Text -> Eventless Schema
parseTypeSystemDefinition =
parseSchema >=> fromElems
parseTypeDefinitions ::
Text -> Eventless [TypeDefinition ANY]
parseTypeDefinitions =
parseSchema >=> validatePartialDocument
parseRequest :: GQLRequest -> Eventless GQLQuery
parseRequest = parseGQL
parseRequestWith :: Schema -> GQLRequest -> Eventless (Operation VALID)
parseRequestWith schema = parseRequest >=> validateRequest schema FULL_VALIDATION