summaryrefslogtreecommitdiff
path: root/Data/GraphQL/AST/Core.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Data/GraphQL/AST/Core.hs')
-rw-r--r--Data/GraphQL/AST/Core.hs31
1 files changed, 31 insertions, 0 deletions
diff --git a/Data/GraphQL/AST/Core.hs b/Data/GraphQL/AST/Core.hs
new file mode 100644
index 0000000..2ca3928
--- /dev/null
+++ b/Data/GraphQL/AST/Core.hs
@@ -0,0 +1,31 @@
+-- | This is the AST meant to be executed.
+module Data.GraphQL.AST.Core where
+
+import Data.Int (Int32)
+import Data.List.NonEmpty (NonEmpty)
+
+import Data.Text (Text)
+
+newtype Name = Name Text deriving (Eq,Show)
+
+newtype Document = Document (NonEmpty Operation) deriving (Eq,Show)
+
+data Operation = Query (NonEmpty Field)
+ | Mutation (NonEmpty Field)
+ deriving (Eq,Show)
+
+data Field = Field Name [Argument] [Field] deriving (Eq,Show)
+
+data Argument = Argument Name Value deriving (Eq,Show)
+
+data Value = ValueInt Int32
+ -- GraphQL Float is double precision
+ | ValueFloat Double
+ | ValueBoolean Bool
+ | ValueString Text
+ | ValueEnum Name
+ | ValueList [Value]
+ | ValueObject [ObjectField]
+ deriving (Eq,Show)
+
+data ObjectField = ObjectField Name Value deriving (Eq,Show)