diff options
Diffstat (limited to 'src/Language/GraphQL/AST.hs')
| -rw-r--r-- | src/Language/GraphQL/AST.hs | 67 |
1 files changed, 48 insertions, 19 deletions
diff --git a/src/Language/GraphQL/AST.hs b/src/Language/GraphQL/AST.hs index 667e4d7..8f40c10 100644 --- a/src/Language/GraphQL/AST.hs +++ b/src/Language/GraphQL/AST.hs @@ -39,63 +39,82 @@ import Language.GraphQL.AST.Core ( Alias -- * Document +-- | GraphQL document. type Document = NonEmpty Definition -- * Operations +-- | Top-level definition of a document, either an operation or a fragment. data Definition = DefinitionOperation OperationDefinition | DefinitionFragment FragmentDefinition - deriving (Eq,Show) + deriving (Eq, Show) +-- | Operation definition. data OperationDefinition = OperationSelectionSet SelectionSet | OperationDefinition OperationType (Maybe Name) VariableDefinitions Directives SelectionSet - deriving (Eq,Show) + deriving (Eq, Show) -data OperationType = Query | Mutation deriving (Eq,Show) +-- | GraphQL has 3 operation types: queries, mutations and subscribtions. +-- +-- Currently only queries and mutations are supported. +data OperationType = Query | Mutation deriving (Eq, Show) --- * SelectionSet +-- * Selections +-- | "Top-level" selection, selection on a operation. type SelectionSet = NonEmpty Selection type SelectionSetOpt = [Selection] -data Selection = SelectionField Field - | SelectionFragmentSpread FragmentSpread - | SelectionInlineFragment InlineFragment - deriving (Eq,Show) +-- | Single selection element. +data Selection + = SelectionField Field + | SelectionFragmentSpread FragmentSpread + | SelectionInlineFragment InlineFragment + deriving (Eq, Show) -- * Field -data Field = Field (Maybe Alias) Name Arguments Directives SelectionSetOpt - deriving (Eq,Show) +-- | GraphQL field. +data Field + = Field (Maybe Alias) Name Arguments Directives SelectionSetOpt + deriving (Eq, Show) -- * Arguments +-- | Argument list. type Arguments = [Argument] +-- | Argument. data Argument = Argument Name Value deriving (Eq,Show) -- * Fragments -data FragmentSpread = FragmentSpread Name Directives deriving (Eq,Show) +-- | Fragment spread. +data FragmentSpread = FragmentSpread Name Directives deriving (Eq, Show) +-- | Inline fragment. data InlineFragment = InlineFragment (Maybe TypeCondition) Directives SelectionSet - deriving (Eq,Show) + deriving (Eq, Show) -data FragmentDefinition = - FragmentDefinition FragmentName TypeCondition Directives SelectionSet - deriving (Eq,Show) +-- | Fragment definition. +data FragmentDefinition + = FragmentDefinition Name TypeCondition Directives SelectionSet + deriving (Eq, Show) +{-# DEPRECATED FragmentName "Use Name instead" #-} type FragmentName = Name +-- | Type condition. type TypeCondition = Name -- * Input values +-- | Input value. data Value = ValueVariable Name | ValueInt Int32 | ValueFloat Double @@ -107,28 +126,38 @@ data Value = ValueVariable Name | ValueObject [ObjectField] deriving (Eq, Show) +-- | Key-value pair. +-- +-- A list of 'ObjectField's represents a GraphQL object type. data ObjectField = ObjectField Name Value deriving (Eq, Show) -- * Variables +-- | Variable definition list. type VariableDefinitions = [VariableDefinition] +-- | Variable definition. data VariableDefinition = VariableDefinition Name Type (Maybe Value) - deriving (Eq,Show) + deriving (Eq, Show) -- * Input types +-- | Type representation. data Type = TypeNamed Name | TypeList Type | TypeNonNull NonNullType - deriving (Eq,Show) + deriving (Eq, Show) + +-- | Helper type to represent Non-Null types and lists of such types. data NonNullType = NonNullTypeNamed Name | NonNullTypeList Type - deriving (Eq,Show) + deriving (Eq, Show) -- * Directives +-- | Directive list. type Directives = [Directive] -data Directive = Directive Name [Argument] deriving (Eq,Show) +-- | Directive. +data Directive = Directive Name [Argument] deriving (Eq, Show) |
