aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/99designs/gqlgen/graphql/introspection/introspection.go
blob: baff882ef2908482efb1d01fbc6acab4766b40cd (plain) (blame)
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
// introspection implements the spec defined in https://github.com/facebook/graphql/blob/master/spec/Section%204%20--%20Introspection.md#schema-introspection
package introspection

import "github.com/vektah/gqlparser/ast"

type (
	Directive struct {
		Name        string
		Description string
		Locations   []string
		Args        []InputValue
	}

	EnumValue struct {
		Name              string
		Description       string
		IsDeprecated      bool
		DeprecationReason string
	}

	Field struct {
		Name              string
		Description       string
		Type              *Type
		Args              []InputValue
		IsDeprecated      bool
		DeprecationReason string
	}

	InputValue struct {
		Name         string
		Description  string
		DefaultValue *string
		Type         *Type
	}
)

func WrapSchema(schema *ast.Schema) *Schema {
	return &Schema{schema: schema}
}

func isDeprecated(directives ast.DirectiveList) bool {
	return directives.ForName("deprecated") != nil
}

func deprecationReason(directives ast.DirectiveList) string {
	deprecation := directives.ForName("deprecated")
	if deprecation == nil {
		return ""
	}

	reason := deprecation.Arguments.ForName("reason")
	if reason == nil {
		return ""
	}

	return reason.Value.Raw
}