summaryrefslogtreecommitdiff
path: root/Data/GraphQL
diff options
context:
space:
mode:
authorDanny Navarro <j@dannynavarro.net>2015-10-17 13:19:00 +0200
committerDanny Navarro <j@dannynavarro.net>2015-10-17 13:23:49 +0200
commit8e3bae4b5c18dd1647e2a1de5c51802531b90ddb (patch)
treeadf1d7924a5269d943c9bfa2fe79c1b1b7917539 /Data/GraphQL
parentc8f629e8268cbd54f026b3e3d0765d9cfe655fec (diff)
downloadgraphql-8e3bae4b5c18dd1647e2a1de5c51802531b90ddb.tar.gz
Initial stub for a `GraphQL` and `execute`
Diffstat (limited to 'Data/GraphQL')
-rw-r--r--Data/GraphQL/Execute.hs14
-rw-r--r--Data/GraphQL/Schema.hs51
2 files changed, 65 insertions, 0 deletions
diff --git a/Data/GraphQL/Execute.hs b/Data/GraphQL/Execute.hs
new file mode 100644
index 0000000..9951144
--- /dev/null
+++ b/Data/GraphQL/Execute.hs
@@ -0,0 +1,14 @@
+{-# LANGUAGE CPP #-}
+module Data.GraphQL.Execute where
+
+#if !MIN_VERSION_base(4,8,0)
+import Control.Applicative (Applicative)
+#endif
+
+import qualified Data.Aeson as Aeson (Value)
+
+import Data.GraphQL.AST
+import Data.GraphQL.Schema
+
+execute :: Applicative f => Schema -> Document -> f Aeson.Value
+execute = undefined
diff --git a/Data/GraphQL/Schema.hs b/Data/GraphQL/Schema.hs
new file mode 100644
index 0000000..cfa1c9c
--- /dev/null
+++ b/Data/GraphQL/Schema.hs
@@ -0,0 +1,51 @@
+module Data.GraphQL.Schema where
+
+import Data.Text (Text)
+import Data.HashMap.Lazy (HashMap)
+
+data Schema = Schema QueryRoot MutationRoot
+
+type QueryRoot = ObjectOutput
+
+type MutationRoot = ObjectOutput
+
+type ObjectOutput = HashMap Text Output
+
+type ObjectInput = HashMap Text Input
+
+data Type = TypeScalar Scalar
+ | TypeOutputObject ObjectOutput
+ | TypeInterface Interface
+ | TypeUnion Union
+ | TypeEnum Scalar
+ | TypeInputObject ObjectInput
+ | TypeList List
+ | TypeNonNull NonNull
+
+data Output = OutputScalar Scalar
+ | OutputObject ObjectOutput
+ | OutputInterface Interface
+ | OutputUnion Union
+ | OutputEnum Scalar
+ | OutputList List
+ | OutputNonNull NonNull
+
+data Input = InputScalar Scalar
+ | InputObject ObjectInput
+ | InputEnum Scalar
+ | InputList List
+ | InputNonNull NonNull
+
+data Scalar = ScalarInt Int
+ | ScalarFloat Double
+ | ScalarString Text
+ | ScalarBool Bool
+ | ScalarID Text
+
+newtype Interface = Interface (HashMap Text Output)
+
+newtype Union = Union [ObjectOutput]
+
+type List = [Type]
+
+type NonNull = Type