From 282946560e14a94748b4a0599ac7419c27848c04 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Tue, 23 Jul 2019 06:04:33 +0200 Subject: Add singleError utility function --- src/Language/GraphQL/Error.hs | 14 +++++++++++--- src/Language/GraphQL/Execute.hs | 8 ++------ 2 files changed, 13 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/Language/GraphQL/Error.hs b/src/Language/GraphQL/Error.hs index 69fc8db..d0bc84d 100644 --- a/src/Language/GraphQL/Error.hs +++ b/src/Language/GraphQL/Error.hs @@ -7,6 +7,7 @@ module Language.GraphQL.Error , addErrMsg , runCollectErrs , runAppendErrs + , singleError ) where import qualified Data.Aeson as Aeson @@ -46,12 +47,19 @@ type CollectErrsT m = StateT [Aeson.Value] m addErr :: Monad m => Aeson.Value -> CollectErrsT m () addErr v = modify (v :) -makeErrorMsg :: Text -> Aeson.Value -makeErrorMsg s = Aeson.object [("message", Aeson.toJSON s)] +makeErrorMessage :: Text -> Aeson.Value +makeErrorMessage s = Aeson.object [("message", Aeson.toJSON s)] + +-- | Constructs a response object containing only the error with the given +-- message. +singleError :: Text -> Aeson.Value +singleError message = Aeson.object + [ ("errors", Aeson.toJSON [makeErrorMessage message]) + ] -- | Convenience function for just wrapping an error message. addErrMsg :: Monad m => Text -> CollectErrsT m () -addErrMsg = addErr . makeErrorMsg +addErrMsg = addErr . makeErrorMessage -- | Appends the given list of errors to the current list of errors. appendErrs :: Monad m => [Aeson.Value] -> CollectErrsT m () diff --git a/src/Language/GraphQL/Execute.hs b/src/Language/GraphQL/Execute.hs index 2a1ff97..9dbfb36 100644 --- a/src/Language/GraphQL/Execute.hs +++ b/src/Language/GraphQL/Execute.hs @@ -29,15 +29,11 @@ execute execute schema subs doc = maybe transformError (document schema) $ Transform.document subs doc where - transformError = return $ Aeson.object - [("errors", Aeson.toJSON - [ Aeson.object [("message", "Schema transformation error.")] - ] - )] + transformError = return $ singleError "Schema transformation error." document :: MonadIO m => Schema m -> AST.Core.Document -> m Aeson.Value document schema (op :| []) = operation schema op -document _ _ = error "Multiple operations not supported yet" +document _ _ = return $ singleError "Multiple operations not supported yet." operation :: MonadIO m => Schema m -> AST.Core.Operation -> m Aeson.Value operation schema (AST.Core.Query flds) -- cgit v1.2.3