summaryrefslogtreecommitdiff
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
parentc8f629e8268cbd54f026b3e3d0765d9cfe655fec (diff)
downloadgraphql-8e3bae4b5c18dd1647e2a1de5c51802531b90ddb.tar.gz
Initial stub for a `GraphQL` and `execute`
-rw-r--r--Data/GraphQL/Execute.hs14
-rw-r--r--Data/GraphQL/Schema.hs51
-rw-r--r--graphql.cabal6
-rw-r--r--stack-7.10.yaml2
4 files changed, 71 insertions, 2 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
diff --git a/graphql.cabal b/graphql.cabal
index 9f944fa..a78f6ab 100644
--- a/graphql.cabal
+++ b/graphql.cabal
@@ -24,10 +24,14 @@ library
ghc-options: -Wall
exposed-modules: Data.GraphQL.AST
Data.GraphQL.Encoder
+ Data.GraphQL.Execute
+ Data.GraphQL.Schema
Data.GraphQL.Parser
build-depends: base >=4.7 && < 5,
text >=0.11.3.1,
- attoparsec >=0.10.4.0
+ aeson >=0.7.0.3,
+ attoparsec >=0.10.4.0,
+ unordered-containers >=0.2.5.0
test-suite tasty
default-language: Haskell2010
diff --git a/stack-7.10.yaml b/stack-7.10.yaml
index bee0443..52f0d6f 100644
--- a/stack-7.10.yaml
+++ b/stack-7.10.yaml
@@ -2,4 +2,4 @@ flags: {}
packages:
- '.'
extra-deps: []
-resolver: lts-3.4
+resolver: lts-3.9