aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/vektah/gqlgen/codegen/enum_build.go
blob: f2e6f63cb4431b2d9251709cecec91d61b91475b (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
package codegen

import (
	"sort"
	"strings"

	"github.com/vektah/gqlgen/codegen/templates"
	"github.com/vektah/gqlgen/neelance/schema"
)

func (cfg *Config) buildEnums(types NamedTypes) []Enum {
	var enums []Enum

	for _, typ := range cfg.schema.Types {
		namedType := types[typ.TypeName()]
		e, isEnum := typ.(*schema.Enum)
		if !isEnum || strings.HasPrefix(typ.TypeName(), "__") || namedType.IsUserDefined {
			continue
		}

		var values []EnumValue
		for _, v := range e.Values {
			values = append(values, EnumValue{v.Name, v.Desc})
		}

		enum := Enum{
			NamedType: namedType,
			Values:    values,
		}
		enum.GoType = templates.ToCamel(enum.GQLType)
		enums = append(enums, enum)
	}

	sort.Slice(enums, func(i, j int) bool {
		return strings.Compare(enums[i].GQLType, enums[j].GQLType) == -1
	})

	return enums
}