{-# LANGUAGE OverloadedStrings #-}
module Data.Morpheus.Error.Internal
( internalTypeMismatch
, internalArgumentError
, internalUnknownTypeMessage
, internalError
, internalResolvingError
)
where
import Data.Text ( Text )
import qualified Data.Text as T
( concat
, pack
)
import Data.Semigroup ( (<>) )
import Data.Morpheus.Error.Utils ( globalErrorMessage )
import Data.Morpheus.Types.Internal.Resolving.Core
( Validation
, GQLErrors
, Failure(..)
)
import Data.Morpheus.Types.Internal.AST.Value
( ValidValue )
internalError :: Text -> Validation b
internalError x = failure $ globalErrorMessage $ "INTERNAL ERROR: " <> x
internalResolvingError :: Text -> GQLErrors
internalResolvingError = globalErrorMessage . ("INTERNAL RESOLVING ERROR:" <>)
internalUnknownTypeMessage :: Text -> GQLErrors
internalUnknownTypeMessage x = globalErrorMessage
$ T.concat ["type did not not found, but was defined by Schema", x]
internalArgumentError :: Text -> Validation b
internalArgumentError x = internalError $ "Argument " <> x
internalTypeMismatch :: Text -> ValidValue -> Validation b
internalTypeMismatch text jsType =
internalError $ "Type mismatch " <> text <> T.pack (show jsType)