{-# LANGUAGE OverloadedStrings #-}
module Data.Morpheus.Error.Internal
( internalTypeMismatch,
internalError,
internalResolvingError,
)
where
import Data.Morpheus.Error.Utils (globalErrorMessage)
import Data.Morpheus.Types.Internal.AST.Base
( GQLErrors,
Message,
msg,
)
import Data.Morpheus.Types.Internal.AST.Value
( ValidValue,
)
import Data.Morpheus.Types.Internal.Resolving.Core
( Eventless,
Failure (..),
)
import Data.Semigroup ((<>))
internalError :: Message -> Eventless a
internalError x = failure $ globalErrorMessage $ "INTERNAL ERROR: " <> x
internalResolvingError :: Message -> GQLErrors
internalResolvingError = globalErrorMessage . ("INTERNAL ERROR:" <>)
internalTypeMismatch :: Message -> ValidValue -> Eventless a
internalTypeMismatch text jsType =
internalError $ "Type mismatch " <> text <> msg jsType