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
|
package main
type Directive struct {
Name string `json:"name"`
Description *string `json:"description,omitempty"`
Locations []DirectiveLocation `json:"locations"`
Args []InputValue `json:"args"`
IsRepeatable bool `json:"isRepeatable"`
}
type DirectiveLocation string
const (
DirectiveLocationQuery DirectiveLocation = "QUERY"
DirectiveLocationMutation DirectiveLocation = "MUTATION"
DirectiveLocationSubscription DirectiveLocation = "SUBSCRIPTION"
DirectiveLocationField DirectiveLocation = "FIELD"
DirectiveLocationFragmentDefinition DirectiveLocation = "FRAGMENT_DEFINITION"
DirectiveLocationFragmentSpread DirectiveLocation = "FRAGMENT_SPREAD"
DirectiveLocationInlineFragment DirectiveLocation = "INLINE_FRAGMENT"
DirectiveLocationVariableDefinition DirectiveLocation = "VARIABLE_DEFINITION"
DirectiveLocationSchema DirectiveLocation = "SCHEMA"
DirectiveLocationScalar DirectiveLocation = "SCALAR"
DirectiveLocationObject DirectiveLocation = "OBJECT"
DirectiveLocationFieldDefinition DirectiveLocation = "FIELD_DEFINITION"
DirectiveLocationArgumentDefinition DirectiveLocation = "ARGUMENT_DEFINITION"
DirectiveLocationInterface DirectiveLocation = "INTERFACE"
DirectiveLocationUnion DirectiveLocation = "UNION"
DirectiveLocationEnum DirectiveLocation = "ENUM"
DirectiveLocationEnumValue DirectiveLocation = "ENUM_VALUE"
DirectiveLocationInputObject DirectiveLocation = "INPUT_OBJECT"
DirectiveLocationInputFieldDefinition DirectiveLocation = "INPUT_FIELD_DEFINITION"
)
type EnumValue struct {
Name string `json:"name"`
Description *string `json:"description,omitempty"`
IsDeprecated bool `json:"isDeprecated"`
DeprecationReason *string `json:"deprecationReason,omitempty"`
}
type Field struct {
Name string `json:"name"`
Description *string `json:"description,omitempty"`
Args []InputValue `json:"args"`
Type *Type `json:"type"`
IsDeprecated bool `json:"isDeprecated"`
DeprecationReason *string `json:"deprecationReason,omitempty"`
}
type InputValue struct {
Name string `json:"name"`
Description *string `json:"description,omitempty"`
Type *Type `json:"type"`
DefaultValue *string `json:"defaultValue,omitempty"`
}
type Schema struct {
Types []Type `json:"types"`
QueryType *Type `json:"queryType"`
MutationType *Type `json:"mutationType,omitempty"`
SubscriptionType *Type `json:"subscriptionType,omitempty"`
Directives []Directive `json:"directives"`
}
type Type struct {
Kind TypeKind `json:"kind"`
Name *string `json:"name,omitempty"`
Description *string `json:"description,omitempty"`
Fields []Field `json:"fields,omitempty"`
Interfaces []Type `json:"interfaces,omitempty"`
PossibleTypes []Type `json:"possibleTypes,omitempty"`
EnumValues []EnumValue `json:"enumValues,omitempty"`
InputFields []InputValue `json:"inputFields,omitempty"`
OfType *Type `json:"ofType,omitempty"`
}
type TypeKind string
const (
TypeKindScalar TypeKind = "SCALAR"
TypeKindObject TypeKind = "OBJECT"
TypeKindInterface TypeKind = "INTERFACE"
TypeKindUnion TypeKind = "UNION"
TypeKindEnum TypeKind = "ENUM"
TypeKindInputObject TypeKind = "INPUT_OBJECT"
TypeKindList TypeKind = "LIST"
TypeKindNonNull TypeKind = "NON_NULL"
)
|