...

Source file src/github.com/vektah/gqlparser/ast/document.go

Documentation: github.com/vektah/gqlparser/ast

     1  package ast
     2  
     3  type QueryDocument struct {
     4  	Operations OperationList
     5  	Fragments  FragmentDefinitionList
     6  	Position   *Position `dump:"-"`
     7  }
     8  
     9  type SchemaDocument struct {
    10  	Schema          SchemaDefinitionList
    11  	SchemaExtension SchemaDefinitionList
    12  	Directives      DirectiveDefinitionList
    13  	Definitions     DefinitionList
    14  	Extensions      DefinitionList
    15  	Position        *Position `dump:"-"`
    16  }
    17  
    18  func (d *SchemaDocument) Merge(other *SchemaDocument) {
    19  	d.Schema = append(d.Schema, other.Schema...)
    20  	d.SchemaExtension = append(d.SchemaExtension, other.SchemaExtension...)
    21  	d.Directives = append(d.Directives, other.Directives...)
    22  	d.Definitions = append(d.Definitions, other.Definitions...)
    23  	d.Extensions = append(d.Extensions, other.Extensions...)
    24  }
    25  
    26  type Schema struct {
    27  	Query        *Definition
    28  	Mutation     *Definition
    29  	Subscription *Definition
    30  
    31  	Types      map[string]*Definition
    32  	Directives map[string]*DirectiveDefinition
    33  
    34  	PossibleTypes map[string][]*Definition
    35  	Implements    map[string][]*Definition
    36  }
    37  
    38  func (s *Schema) AddPossibleType(name string, def *Definition) {
    39  	s.PossibleTypes[name] = append(s.PossibleTypes[name], def)
    40  }
    41  
    42  // GetPossibleTypes will enumerate all the definitions for a given interface or union
    43  func (s *Schema) GetPossibleTypes(def *Definition) []*Definition {
    44  	return s.PossibleTypes[def.Name]
    45  }
    46  
    47  func (s *Schema) AddImplements(name string, iface *Definition) {
    48  	s.Implements[name] = append(s.Implements[name], iface)
    49  }
    50  
    51  // GetImplements returns all the interface and union definitions that the given definition satisfies
    52  func (s *Schema) GetImplements(def *Definition) []*Definition {
    53  	return s.Implements[def.Name]
    54  }
    55  
    56  type SchemaDefinition struct {
    57  	Description    string
    58  	Directives     DirectiveList
    59  	OperationTypes OperationTypeDefinitionList
    60  	Position       *Position `dump:"-"`
    61  }
    62  
    63  type OperationTypeDefinition struct {
    64  	Operation Operation
    65  	Type      string
    66  	Position  *Position `dump:"-"`
    67  }
    68  

View as plain text