diff options
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 |
