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