enum_build.go

 1package codegen
 2
 3import (
 4	"sort"
 5	"strings"
 6
 7	"github.com/vektah/gqlgen/codegen/templates"
 8	"github.com/vektah/gqlgen/neelance/schema"
 9)
10
11func (cfg *Config) buildEnums(types NamedTypes) []Enum {
12	var enums []Enum
13
14	for _, typ := range cfg.schema.Types {
15		namedType := types[typ.TypeName()]
16		e, isEnum := typ.(*schema.Enum)
17		if !isEnum || strings.HasPrefix(typ.TypeName(), "__") || namedType.IsUserDefined {
18			continue
19		}
20
21		var values []EnumValue
22		for _, v := range e.Values {
23			values = append(values, EnumValue{v.Name, v.Desc})
24		}
25
26		enum := Enum{
27			NamedType: namedType,
28			Values:    values,
29		}
30		enum.GoType = templates.ToCamel(enum.GQLType)
31		enums = append(enums, enum)
32	}
33
34	sort.Slice(enums, func(i, j int) bool {
35		return strings.Compare(enums[i].GQLType, enums[j].GQLType) == -1
36	})
37
38	return enums
39}