summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
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)