aboutsummaryrefslogblamecommitdiffstats
path: root/vendor/github.com/99designs/gqlgen/codegen/enum_build.go
blob: 457d923f22c1381117363d6ef5829e02ddbdd440 (plain) (tree)






































                                                                                                         
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 enums[i].GQLType < enums[j].GQLType
	})

	return enums
}