forked from 99designs/gqlgen
-
Notifications
You must be signed in to change notification settings - Fork 0
/
enum_build.go
39 lines (31 loc) · 832 Bytes
/
enum_build.go
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/99designs/gqlgen/codegen/templates"
"github.com/vektah/gqlparser/ast"
)
func (cfg *Config) buildEnums(types NamedTypes) []Enum {
var enums []Enum
for _, typ := range cfg.schema.Types {
namedType := types[typ.Name]
if typ.Kind != ast.Enum || strings.HasPrefix(typ.Name, "__") || namedType.IsUserDefined {
continue
}
var values []EnumValue
for _, v := range typ.EnumValues {
values = append(values, EnumValue{v.Name, v.Description})
}
enum := Enum{
NamedType: namedType,
Values: values,
Description: typ.Description,
}
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
}