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