github.com/99designs/gqlgeN@v0.7.2/codegen/enum_build.go (about)

     1  package codegen
     2  
     3  import (
     4  	"sort"
     5  	"strings"
     6  
     7  	"github.com/99designs/gqlgen/codegen/templates"
     8  	"github.com/vektah/gqlparser/ast"
     9  )
    10  
    11  func (cfg *Config) buildEnums(types NamedTypes) []Enum {
    12  	var enums []Enum
    13  
    14  	for _, typ := range cfg.schema.Types {
    15  		namedType := types[typ.Name]
    16  		if typ.Kind != ast.Enum || strings.HasPrefix(typ.Name, "__") || namedType.IsUserDefined {
    17  			continue
    18  		}
    19  
    20  		var values []EnumValue
    21  		for _, v := range typ.EnumValues {
    22  			values = append(values, EnumValue{v.Name, v.Description})
    23  		}
    24  
    25  		enum := Enum{
    26  			NamedType:   namedType,
    27  			Values:      values,
    28  			Description: typ.Description,
    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 enums[i].GQLType < enums[j].GQLType
    36  	})
    37  
    38  	return enums
    39  }