morpheus-graphql-0.11.0: src/Data/Morpheus/Error/Variable.hs
{-# 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(..) )
-- query M ( $v : String ) { a(p:$v) } -> "Variable \"$v\" of type \"String\" used in position expecting type \"LANGUAGE\"."
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."