summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Language/GraphQL/AST.hs58
-rw-r--r--src/Language/GraphQL/AST/Core.hs4
-rw-r--r--src/Language/GraphQL/AST/Transform.hs5
-rw-r--r--src/Language/GraphQL/Encoder.hs8
-rw-r--r--src/Language/GraphQL/Parser.hs4
5 files changed, 26 insertions, 53 deletions
diff --git a/src/Language/GraphQL/AST.hs b/src/Language/GraphQL/AST.hs
index e0a30e6..667e4d7 100644
--- a/src/Language/GraphQL/AST.hs
+++ b/src/Language/GraphQL/AST.hs
@@ -6,7 +6,6 @@ module Language.GraphQL.AST
( Alias
, Argument(..)
, Arguments
- , DefaultValue
, Definition(..)
, Directive(..)
, Directives
@@ -16,11 +15,9 @@ module Language.GraphQL.AST
, FragmentName
, FragmentSpread(..)
, InlineFragment(..)
- , ListValue
, Name
, NonNullType(..)
, ObjectField(..)
- , ObjectValue
, OperationDefinition(..)
, OperationType(..)
, Selection(..)
@@ -29,7 +26,6 @@ module Language.GraphQL.AST
, Type(..)
, TypeCondition
, Value(..)
- , Variable
, VariableDefinition(..)
, VariableDefinitions
) where
@@ -37,10 +33,9 @@ module Language.GraphQL.AST
import Data.Int (Int32)
import Data.List.NonEmpty (NonEmpty)
import Data.Text (Text)
-
--- * Name
-
-type Name = Text
+import Language.GraphQL.AST.Core ( Alias
+ , Name
+ )
-- * Document
@@ -78,8 +73,6 @@ data Selection = SelectionField Field
data Field = Field (Maybe Alias) Name Arguments Directives SelectionSetOpt
deriving (Eq,Show)
-type Alias = Name
-
-- * Arguments
type Arguments = [Argument]
@@ -101,48 +94,29 @@ type FragmentName = Name
type TypeCondition = Name
--- Input Values
+-- * Input values
-data Value = ValueVariable Variable
- | ValueInt IntValue
- | ValueFloat FloatValue
- | ValueString StringValue
- | ValueBoolean BooleanValue
+data Value = ValueVariable Name
+ | ValueInt Int32
+ | ValueFloat Double
+ | ValueString Text
+ | ValueBoolean Bool
| ValueNull
- | ValueEnum EnumValue
- | ValueList ListValue
- | ValueObject ObjectValue
- deriving (Eq,Show)
-
-type IntValue = Int32
-
--- GraphQL Float is double precison
-type FloatValue = Double
-
-type StringValue = Text
+ | ValueEnum Name
+ | ValueList [Value]
+ | ValueObject [ObjectField]
+ deriving (Eq, Show)
-type BooleanValue = Bool
-
-type EnumValue = Name
-
-type ListValue = [Value]
-
-type ObjectValue = [ObjectField]
-
-data ObjectField = ObjectField Name Value deriving (Eq,Show)
+data ObjectField = ObjectField Name Value deriving (Eq, Show)
-- * Variables
type VariableDefinitions = [VariableDefinition]
-data VariableDefinition = VariableDefinition Variable Type (Maybe DefaultValue)
+data VariableDefinition = VariableDefinition Name Type (Maybe Value)
deriving (Eq,Show)
-type Variable = Name
-
-type DefaultValue = Value
-
--- * Input Types
+-- * Input types
data Type = TypeNamed Name
| TypeList Type
diff --git a/src/Language/GraphQL/AST/Core.hs b/src/Language/GraphQL/AST/Core.hs
index eb4e505..00072e0 100644
--- a/src/Language/GraphQL/AST/Core.hs
+++ b/src/Language/GraphQL/AST/Core.hs
@@ -1,6 +1,7 @@
-- | This is the AST meant to be executed.
module Language.GraphQL.AST.Core
- ( Argument(..)
+ ( Alias
+ , Argument(..)
, Document
, Field(..)
, Name
@@ -15,6 +16,7 @@ import Data.String
import Data.Text (Text)
+-- | Name
type Name = Text
type Document = NonEmpty Operation
diff --git a/src/Language/GraphQL/AST/Transform.hs b/src/Language/GraphQL/AST/Transform.hs
index 94c3792..64670db 100644
--- a/src/Language/GraphQL/AST/Transform.hs
+++ b/src/Language/GraphQL/AST/Transform.hs
@@ -10,16 +10,13 @@ import Data.Either (partitionEithers)
import Data.Foldable (fold, foldMap)
import qualified Data.List.NonEmpty as NonEmpty
import Data.Monoid (Alt(Alt,getAlt), (<>))
-import Data.Text (Text)
import qualified Language.GraphQL.AST as Full
import qualified Language.GraphQL.AST.Core as Core
import qualified Language.GraphQL.Schema as Schema
-type Name = Text
-
-- | Replaces a fragment name by a list of 'Field'. If the name doesn't match an
-- empty list is returned.
-type Fragmenter = Name -> [Core.Field]
+type Fragmenter = Core.Name -> [Core.Field]
-- TODO: Replace Maybe by MonadThrow with CustomError
document :: Schema.Subs -> Full.Document -> Maybe Core.Document
diff --git a/src/Language/GraphQL/Encoder.hs b/src/Language/GraphQL/Encoder.hs
index 266f314..c315091 100644
--- a/src/Language/GraphQL/Encoder.hs
+++ b/src/Language/GraphQL/Encoder.hs
@@ -41,10 +41,10 @@ variableDefinition :: VariableDefinition -> Text
variableDefinition (VariableDefinition var ty dv) =
variable var <> ":" <> type_ ty <> maybe mempty defaultValue dv
-defaultValue :: DefaultValue -> Text
+defaultValue :: Value -> Text
defaultValue val = "=" <> value val
-variable :: Variable -> Text
+variable :: Name -> Text
variable var = "$" <> var
selectionSet :: SelectionSet -> Text
@@ -113,10 +113,10 @@ booleanValue False = "false"
stringValue :: Text -> Text
stringValue = quotes
-listValue :: ListValue -> Text
+listValue :: [Value] -> Text
listValue = bracketsCommas value
-objectValue :: ObjectValue -> Text
+objectValue :: [ObjectField] -> Text
objectValue = bracesCommas objectField
objectField :: ObjectField -> Text
diff --git a/src/Language/GraphQL/Parser.hs b/src/Language/GraphQL/Parser.hs
index a773a05..f18621a 100644
--- a/src/Language/GraphQL/Parser.hs
+++ b/src/Language/GraphQL/Parser.hs
@@ -140,10 +140,10 @@ variableDefinition = VariableDefinition <$> variable
<* colon
<*> type_
<*> optional defaultValue
-variable :: Parser Variable
+variable :: Parser Name
variable = dollar *> name
-defaultValue :: Parser DefaultValue
+defaultValue :: Parser Value
defaultValue = equals *> value
-- * Input Types