summaryrefslogtreecommitdiff
path: root/Data/GraphQL.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Data/GraphQL.hs')
-rw-r--r--Data/GraphQL.hs18
1 files changed, 16 insertions, 2 deletions
diff --git a/Data/GraphQL.hs b/Data/GraphQL.hs
index 2da8a46..dfe9362 100644
--- a/Data/GraphQL.hs
+++ b/Data/GraphQL.hs
@@ -1,6 +1,7 @@
+-- | This module provides the functions to parse and execute @GraphQL@ queries.
module Data.GraphQL where
-import Control.Applicative (Alternative, empty)
+import Control.Applicative (Alternative)
import Data.Text (Text)
@@ -11,10 +12,23 @@ import Data.GraphQL.Execute
import Data.GraphQL.Parser
import Data.GraphQL.Schema
+import Data.GraphQL.Error
+
+-- | Takes a 'Schema' and text representing a @GraphQL@ request document.
+-- If the text parses correctly as a @GraphQL@ query the query is
+-- executed according to the given 'Schema'.
+--
+-- Returns the response as an @Aeson.@'Aeson.Value'.
graphql :: (Alternative m, Monad m) => Schema m -> Text -> m Aeson.Value
graphql = flip graphqlSubs $ const Nothing
+-- | Takes a 'Schema', a variable substitution function and text
+-- representing a @GraphQL@ request document. If the text parses
+-- correctly as a @GraphQL@ query the substitution is applied to the
+-- query and the query is then executed according to the given 'Schema'.
+--
+-- Returns the response as an @Aeson.@'Aeson.Value'.
graphqlSubs :: (Alternative m, Monad m) => Schema m -> Subs -> Text -> m Aeson.Value
graphqlSubs schema f =
- either (const empty) (execute schema f)
+ either parseError (execute schema f)
. Attoparsec.parseOnly document