diff options
| author | Eugen Wissner <belka@caraus.de> | 2019-07-23 06:04:33 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2019-07-23 07:22:32 +0200 |
| commit | 282946560e14a94748b4a0599ac7419c27848c04 (patch) | |
| tree | 54341b3653bbde17002d8bc119de2d0688d15c13 /src | |
| parent | 1b5094b6a3e6eb68f67bc3238487818f7b7d552a (diff) | |
| download | graphql-282946560e14a94748b4a0599ac7419c27848c04.tar.gz | |
Add singleError utility functionv0.4.0.0
Diffstat (limited to 'src')
| -rw-r--r-- | src/Language/GraphQL/Error.hs | 14 | ||||
| -rw-r--r-- | src/Language/GraphQL/Execute.hs | 8 |
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) |
