{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
module Data.Morpheus.Error.Variable
( uninitializedVariable,
incompatibleVariableType,
)
where
import Data.Morpheus.Error.Utils (errorMessage)
import Data.Morpheus.Types.Internal.AST
( GQLErrors,
Ref (..),
TypeRef,
Variable (..),
msg,
)
import Data.Semigroup ((<>))
incompatibleVariableType :: Ref -> Variable s -> TypeRef -> GQLErrors
incompatibleVariableType
(Ref variableName argPosition)
Variable {variableType}
argumentType =
errorMessage argPosition text
where
text =
"Variable "
<> msg ("$" <> variableName)
<> " of type "
<> msg variableType
<> " used in position expecting type "
<> msg argumentType
<> "."
uninitializedVariable :: Variable s -> GQLErrors
uninitializedVariable Variable {variableName, variableType, variablePosition} =
errorMessage
variablePosition
$ "Variable "
<> msg ("$" <> variableName)
<> " of required type "
<> msg variableType
<> " was not provided."