morpheus-graphql-core-0.18.0: src/Data/Morpheus/Error/Selection.hs
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE NoImplicitPrelude #-}
module Data.Morpheus.Error.Selection
( unknownSelectionField,
subfieldsNotSelected,
hasNoSubfields,
)
where
import Data.Morpheus.Types.Internal.AST
( FieldName,
GQLError,
Position,
Ref (..),
TypeDefinition (..),
TypeName,
VALID,
at,
msg,
)
import Data.Semigroup ((<>))
-- GQL: "Field \"default\" must not have a selection since type \"String!\" has no subfields."
hasNoSubfields :: Ref FieldName -> TypeDefinition s VALID -> GQLError
hasNoSubfields (Ref selectionName position) TypeDefinition {typeName} = text `at` position
where
text =
"Field "
<> msg selectionName
<> " must not have a selection since type "
<> msg typeName
<> " has no subfields."
unknownSelectionField :: TypeName -> Ref FieldName -> GQLError
unknownSelectionField typeName Ref {refName, refPosition} = text `at` refPosition
where
text =
"Cannot query field " <> msg refName
<> " on type "
<> msg typeName
<> "."
-- GQL:: Field \"hobby\" of type \"Hobby!\" must have a selection of subfields. Did you mean \"hobby { ... }\"?
subfieldsNotSelected :: FieldName -> TypeName -> Position -> GQLError
subfieldsNotSelected fieldName typeName position = text `at` position
where
text =
"Field " <> msg fieldName <> " of type "
<> msg typeName
<> " must have a selection of subfields"