diff options
| author | Eugen Wissner <belka@caraus.de> | 2020-07-08 08:16:14 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2020-07-08 08:17:55 +0200 |
| commit | c9e265f72c301a543091d58ec10863c66b279fd0 (patch) | |
| tree | ffe05b502fc20ce163130b7e3d383da19d76af6d /src/Language/GraphQL.hs | |
| parent | b2d473de8dac0f85f11a8f9985d1a9a4dfee03ab (diff) | |
| download | graphql-c9e265f72c301a543091d58ec10863c66b279fd0.tar.gz | |
Return parser error location in a list
An error can have multiple locations which are returned in a listt with
key "locations".
Diffstat (limited to 'src/Language/GraphQL.hs')
| -rw-r--r-- | src/Language/GraphQL.hs | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/Language/GraphQL.hs b/src/Language/GraphQL.hs index adda7a1..845d5cf 100644 --- a/src/Language/GraphQL.hs +++ b/src/Language/GraphQL.hs @@ -8,6 +8,7 @@ module Language.GraphQL ) where import qualified Data.Aeson as Aeson +import qualified Data.Aeson.Types as Aeson import qualified Data.Sequence as Seq import Data.Text (Text) import Language.GraphQL.AST @@ -41,13 +42,16 @@ graphqlSubs schema operationName variableValues document' = pure $ Aeson.object [("data", data'')] formatResponse (Response data'' errors') = pure $ Aeson.object [ ("data", data'') - , ("errors", Aeson.toJSON $ toJSON <$> errors') + , ("errors", Aeson.toJSON $ fromError <$> errors') ] - toJSON Error{ line = 0, column = 0, ..} = + fromError Error{ locations = [], ..} = Aeson.object [("message", Aeson.toJSON message)] - toJSON Error{..} = Aeson.object + fromError Error{..} = Aeson.object [ ("message", Aeson.toJSON message) - , ("line", Aeson.toJSON line) + , ("locations", Aeson.listValue fromLocation locations) + ] + fromLocation Location{..} = Aeson.object + [ ("line", Aeson.toJSON line) , ("column", Aeson.toJSON column) ] executeRequest = execute schema operationName variableValues |
