-
Notifications
You must be signed in to change notification settings - Fork 0
/
typesystem.go
127 lines (105 loc) · 2.24 KB
/
typesystem.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
package ast
type DefinitionKind uint
const (
SchemaKind DefinitionKind = iota
ScalarKind
ObjectKind
InterfaceKind
UnionKind
EnumKind
InputObjectKind
DirectiveKind
)
type Definition interface {
Kind() DefinitionKind
}
type SchemaDefinition struct {
Name string
Directives []*Directive
RootOperations map[OperationType]*NamedType
}
func (d *SchemaDefinition) Kind() DefinitionKind {
return SchemaKind
}
type ScalarDefinition struct {
Description string
Name string
Directives []*Directive
}
func (d *ScalarDefinition) Kind() DefinitionKind {
return ScalarKind
}
type ObjectDefinition struct {
Description string
Name string
Implements []*NamedType
Directives []*Directive
Fields []*FieldDefinition
}
func (d *ObjectDefinition) Kind() DefinitionKind {
return ObjectKind
}
type FieldDefinition struct {
Description string
Name string
Arguments []*InputValueDefinition
Type Type
Directives []*Directive
}
type InputValueDefinition struct {
Description string
Name string
Type Type
DefaultValue Value
Directives []*Directive
}
type InterfaceDefinition struct {
Description string
Name string
Directives []*Directive
Fields []*FieldDefinition
}
func (d *InterfaceDefinition) Kind() DefinitionKind {
return InterfaceKind
}
type UnionDefinition struct {
Description string
Name string
Directives []*Directive
Members []*NamedType
}
func (d *UnionDefinition) Kind() DefinitionKind {
return UnionKind
}
type EnumDefinition struct {
Description string
Name string
Directives []*Directive
Values []*EnumValueDefinition
}
func (d *EnumDefinition) Kind() DefinitionKind {
return EnumKind
}
type EnumValueDefinition struct {
Description string
Value *EnumValue
Directives []*Directive
}
type InputObjectDefinition struct {
Description string
Name string
Directives []*Directive
Fields []*InputValueDefinition
}
func (d *InputObjectDefinition) Kind() DefinitionKind {
return InputObjectKind
}
type DirectiveDefinition struct {
Description string
Name string
Locations []string
Arguments []*InputValueDefinition
}
func (d *DirectiveDefinition) Kind() DefinitionKind {
return DirectiveKind
}