{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
module Data.Morpheus.Error.Selection
( unknownSelectionField,
subfieldsNotSelected,
hasNoSubfields,
)
where
import Data.Morpheus.Error.Utils (errorMessage)
import Data.Morpheus.Types.Internal.AST.Base
( FieldName,
GQLErrors,
Position,
Ref (..),
TypeName,
msg,
)
import Data.Semigroup ((<>))
hasNoSubfields :: Ref -> TypeName -> GQLErrors
hasNoSubfields (Ref selectionName position) typeName = errorMessage position text
where
text =
"Field "
<> msg selectionName
<> " must not have a selection since type "
<> msg typeName
<> " has no subfields."
unknownSelectionField :: TypeName -> Ref -> GQLErrors
unknownSelectionField typeName Ref {refName, refPosition} = errorMessage refPosition text
where
text =
"Cannot query field " <> msg refName
<> " on type "
<> msg typeName
<> "."
subfieldsNotSelected :: FieldName -> TypeName -> Position -> GQLErrors
subfieldsNotSelected fieldName typeName position = errorMessage position text
where
text =
"Field " <> msg fieldName <> " of type "
<> msg typeName
<> " must have a selection of subfields"