summaryrefslogtreecommitdiff
path: root/Data/GraphQL/Execute.hs
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2019-06-28 11:12:28 +0200
committerEugen Wissner <belka@caraus.de>2019-06-28 11:12:28 +0200
commit79c734fa629f6bb200e2d695200c5ec2967c997f (patch)
treeef8ee586b3161346f64e270fa5e806eb40a9aeb0 /Data/GraphQL/Execute.hs
parentae4038eb471030edd7261d04d8f170663475a2b7 (diff)
downloadgraphql-79c734fa629f6bb200e2d695200c5ec2967c997f.tar.gz
Replace Alternative with MonadPlus
Diffstat (limited to 'Data/GraphQL/Execute.hs')
-rw-r--r--Data/GraphQL/Execute.hs14
1 files changed, 8 insertions, 6 deletions
diff --git a/Data/GraphQL/Execute.hs b/Data/GraphQL/Execute.hs
index b227ce2..e6bb1c9 100644
--- a/Data/GraphQL/Execute.hs
+++ b/Data/GraphQL/Execute.hs
@@ -3,7 +3,7 @@
-- according to a 'Schema'.
module Data.GraphQL.Execute (execute) where
-import Control.Applicative (Alternative, empty)
+import Control.Monad (MonadPlus(..))
import Data.GraphQL.Error
import qualified Data.List.NonEmpty as NE
import Data.List.NonEmpty (NonEmpty((:|)))
@@ -21,15 +21,17 @@ import qualified Data.GraphQL.Schema as Schema
-- Returns the result of the query against the 'Schema' wrapped in a /data/ field, or
-- errors wrapped in an /errors/ field.
execute
- :: (Alternative f, Monad f)
- => Schema f -> Schema.Subs -> AST.Document -> f Aeson.Value
-execute schema subs doc = document schema =<< maybe empty pure (Transform.document subs doc)
+ :: (MonadPlus m)
+ => Schema m -> Schema.Subs -> AST.Document -> m Aeson.Value
+execute schema subs doc = do
+ coreDocument <- maybe mzero pure (Transform.document subs doc)
+ document schema coreDocument
-document :: Alternative f => Schema f -> AST.Core.Document -> f Aeson.Value
+document :: MonadPlus m => Schema m -> AST.Core.Document -> m Aeson.Value
document schema (op :| []) = operation schema op
document _ _ = error "Multiple operations not supported yet"
-operation :: Alternative f => Schema f -> AST.Core.Operation -> f Aeson.Value
+operation :: MonadPlus m => Schema m -> AST.Core.Operation -> m Aeson.Value
operation schema (AST.Core.Query flds)
= runCollectErrs (Schema.resolve (NE.toList schema) (NE.toList flds))
operation schema (AST.Core.Mutation flds)