morpheus-graphql-0.11.0: src/Data/Morpheus/Error/Selection.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE NamedFieldPuns #-}
module Data.Morpheus.Error.Selection
( unknownSelectionField
, subfieldsNotSelected
, hasNoSubfields
)
where
import Data.Semigroup ( (<>) )
import Data.Morpheus.Error.Utils ( errorMessage )
import Data.Morpheus.Types.Internal.AST.Base
( Position
, GQLErrors
, Ref(..)
, Name
)
import Data.Text ( Text )
-- GQL: "Field \"default\" must not have a selection since type \"String!\" has no subfields."
hasNoSubfields :: Ref -> Name -> GQLErrors
hasNoSubfields (Ref selectionName position) typeName = errorMessage position text
where
text = "Field \"" <> selectionName <> "\" must not have a selection since type \"" <> typeName <> "\" has no subfields."
unknownSelectionField :: Name -> Ref -> GQLErrors
unknownSelectionField typeName Ref { refName , refPosition } = errorMessage refPosition text
where
text = "Cannot query field \"" <> refName <> "\" on type \"" <> typeName <> "\"."
-- GQL:: Field \"hobby\" of type \"Hobby!\" must have a selection of subfields. Did you mean \"hobby { ... }\"?
subfieldsNotSelected :: Text -> Text -> Position -> GQLErrors
subfieldsNotSelected key typeName position = errorMessage position text
where
text = "Field \"" <> key <> "\" of type \""
<> typeName <> "\" must have a selection of subfields"