directive.go

 1package ast
 2
 3type DirectiveLocation string
 4
 5const (
 6	// Executable
 7	LocationQuery              DirectiveLocation = `QUERY`
 8	LocationMutation           DirectiveLocation = `MUTATION`
 9	LocationSubscription       DirectiveLocation = `SUBSCRIPTION`
10	LocationField              DirectiveLocation = `FIELD`
11	LocationFragmentDefinition DirectiveLocation = `FRAGMENT_DEFINITION`
12	LocationFragmentSpread     DirectiveLocation = `FRAGMENT_SPREAD`
13	LocationInlineFragment     DirectiveLocation = `INLINE_FRAGMENT`
14
15	// Type System
16	LocationSchema               DirectiveLocation = `SCHEMA`
17	LocationScalar               DirectiveLocation = `SCALAR`
18	LocationObject               DirectiveLocation = `OBJECT`
19	LocationFieldDefinition      DirectiveLocation = `FIELD_DEFINITION`
20	LocationArgumentDefinition   DirectiveLocation = `ARGUMENT_DEFINITION`
21	LocationInterface            DirectiveLocation = `INTERFACE`
22	LocationUnion                DirectiveLocation = `UNION`
23	LocationEnum                 DirectiveLocation = `ENUM`
24	LocationEnumValue            DirectiveLocation = `ENUM_VALUE`
25	LocationInputObject          DirectiveLocation = `INPUT_OBJECT`
26	LocationInputFieldDefinition DirectiveLocation = `INPUT_FIELD_DEFINITION`
27)
28
29type Directive struct {
30	Name      string
31	Arguments ArgumentList
32	Position  *Position `dump:"-"`
33
34	// Requires validation
35	ParentDefinition *Definition
36	Definition       *DirectiveDefinition
37	Location         DirectiveLocation
38}
39
40func (d *Directive) ArgumentMap(vars map[string]interface{}) map[string]interface{} {
41	return arg2map(d.Definition.Arguments, d.Arguments, vars)
42}