summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2019-07-23 06:04:33 +0200
committerEugen Wissner <belka@caraus.de>2019-07-23 07:22:32 +0200
commit282946560e14a94748b4a0599ac7419c27848c04 (patch)
tree54341b3653bbde17002d8bc119de2d0688d15c13 /src
parent1b5094b6a3e6eb68f67bc3238487818f7b7d552a (diff)
downloadgraphql-282946560e14a94748b4a0599ac7419c27848c04.tar.gz
Add singleError utility functionv0.4.0.0
Diffstat (limited to 'src')
-rw-r--r--src/Language/GraphQL/Error.hs14
-rw-r--r--src/Language/GraphQL/Execute.hs8
2 files changed, 13 insertions, 9 deletions
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)