{-# LANGUAGE OverloadedStrings #-}

module Data.Morpheus.Error.Schema
  ( nameCollisionError,
    schemaValidationError,
  )
where

import Data.Morpheus.Error.Utils (globalErrorMessage)
import Data.Morpheus.Types.Internal.AST.Base
  ( GQLErrors,
    Message,
    TypeName,
    msg,
  )
import Data.Semigroup ((<>))

schemaValidationError :: Message -> GQLErrors
schemaValidationError error' =
  globalErrorMessage $ "Schema Validation Error, " <> error'

nameCollisionError :: TypeName -> GQLErrors
nameCollisionError typeName =
  schemaValidationError $
    "Name collision: "
      <> msg typeName
      <> " is used for different dataTypes in two separate modules"