...
1 package ast
2
3 type DefinitionKind string
4
5 const (
6 Scalar DefinitionKind = "SCALAR"
7 Object DefinitionKind = "OBJECT"
8 Interface DefinitionKind = "INTERFACE"
9 Union DefinitionKind = "UNION"
10 Enum DefinitionKind = "ENUM"
11 InputObject DefinitionKind = "INPUT_OBJECT"
12 )
13
14
15
16
17
18
19
20
21
22 type Definition struct {
23 Kind DefinitionKind
24 Description string
25 Name string
26 Directives DirectiveList
27 Interfaces []string
28 Fields FieldList
29 Types []string
30 EnumValues EnumValueList
31
32 Position *Position `dump:"-"`
33 BuiltIn bool `dump:"-"`
34 }
35
36 func (d *Definition) IsLeafType() bool {
37 return d.Kind == Enum || d.Kind == Scalar
38 }
39
40 func (d *Definition) IsAbstractType() bool {
41 return d.Kind == Interface || d.Kind == Union
42 }
43
44 func (d *Definition) IsCompositeType() bool {
45 return d.Kind == Object || d.Kind == Interface || d.Kind == Union
46 }
47
48 func (d *Definition) IsInputType() bool {
49 return d.Kind == Scalar || d.Kind == Enum || d.Kind == InputObject
50 }
51
52 func (d *Definition) OneOf(types ...string) bool {
53 for _, t := range types {
54 if d.Name == t {
55 return true
56 }
57 }
58 return false
59 }
60
61 type FieldDefinition struct {
62 Description string
63 Name string
64 Arguments ArgumentDefinitionList
65 DefaultValue *Value
66 Type *Type
67 Directives DirectiveList
68 Position *Position `dump:"-"`
69 }
70
71 type ArgumentDefinition struct {
72 Description string
73 Name string
74 DefaultValue *Value
75 Type *Type
76 Directives DirectiveList
77 Position *Position `dump:"-"`
78 }
79
80 type EnumValueDefinition struct {
81 Description string
82 Name string
83 Directives DirectiveList
84 Position *Position `dump:"-"`
85 }
86
87 type DirectiveDefinition struct {
88 Description string
89 Name string
90 Arguments ArgumentDefinitionList
91 Locations []DirectiveLocation
92 Position *Position `dump:"-"`
93 }
94
View as plain text