summaryrefslogtreecommitdiff
path: root/Data/GraphQL.hs
diff options
context:
space:
mode:
authorDanny Navarro <j@dannynavarro.net>2016-02-05 12:32:35 +0100
committerDanny Navarro <j@dannynavarro.net>2016-02-05 12:32:35 +0100
commitc81ddb03353c65abaea1778159b0a7c37ffe38a8 (patch)
tree65e7cfb6423c1518679014478735858c4ed98133 /Data/GraphQL.hs
parenteca3c2d8d4d427b58c2109c277975219bad58e43 (diff)
downloadgraphql-c81ddb03353c65abaea1778159b0a7c37ffe38a8.tar.gz
Introduce `graphql` function
This simplifies Attoparsec parsing when executing a GraphQL query.
Diffstat (limited to 'Data/GraphQL.hs')
-rw-r--r--Data/GraphQL.hs16
1 files changed, 16 insertions, 0 deletions
diff --git a/Data/GraphQL.hs b/Data/GraphQL.hs
new file mode 100644
index 0000000..d18ff2f
--- /dev/null
+++ b/Data/GraphQL.hs
@@ -0,0 +1,16 @@
+module Data.GraphQL where
+
+import Control.Applicative (Alternative, empty)
+
+import Data.Text (Text)
+
+import qualified Data.Aeson as Aeson
+import qualified Data.Attoparsec.Text as Attoparsec
+
+import Data.GraphQL.Execute
+import Data.GraphQL.Parser
+import Data.GraphQL.Schema
+
+graphql :: (Alternative m, Monad m) => Schema m -> Text -> m Aeson.Value
+graphql schema = either (const empty) (execute schema)
+ . Attoparsec.parseOnly document