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}