github.com/senomas/gqlgen@v0.17.11-0.20220626120754-9aee61b0716a/plugin/modelgen/models.gotpl (about) 1 {{ reserveImport "context" }} 2 {{ reserveImport "fmt" }} 3 {{ reserveImport "io" }} 4 {{ reserveImport "strconv" }} 5 {{ reserveImport "time" }} 6 {{ reserveImport "sync" }} 7 {{ reserveImport "errors" }} 8 {{ reserveImport "bytes" }} 9 10 {{ reserveImport "github.com/vektah/gqlparser/v2" }} 11 {{ reserveImport "github.com/vektah/gqlparser/v2/ast" }} 12 {{ reserveImport "github.com/99designs/gqlgen/graphql" }} 13 {{ reserveImport "github.com/99designs/gqlgen/graphql/introspection" }} 14 15 {{- range $model := .Interfaces }} 16 {{ with .Description }} {{.|prefixLines "// "}} {{ end }} 17 type {{.Name|go }} interface { 18 {{- range $impl := .Implements }} 19 {{ $impl|go }} 20 {{- end }} 21 Is{{.Name|go }}() 22 } 23 {{- end }} 24 25 {{ range $model := .Models }} 26 {{with .Description }} {{.|prefixLines "// "}} {{end}} 27 type {{ .Name|go }} struct { 28 {{- range $field := .Fields }} 29 {{- with .Description }} 30 {{.|prefixLines "// "}} 31 {{- end}} 32 {{ $field.GoName|go }} {{$field.Type | ref}} `{{$field.Tag}}` 33 {{- if $field.Ref}} 34 {{ $field.Ref }} 35 {{- end}} 36 {{- end }} 37 } 38 39 {{- range $iface := .Implements }} 40 func ({{ $model.Name|go }}) Is{{ $iface|go }}() {} 41 {{- end }} 42 {{- end}} 43 44 {{ range $enum := .Enums }} 45 {{ with .Description }} {{.|prefixLines "// "}} {{end}} 46 type {{.Name|go }} string 47 const ( 48 {{- range $value := .Values}} 49 {{- with .Description}} 50 {{.|prefixLines "// "}} 51 {{- end}} 52 {{ $enum.Name|go }}{{ .Name|go }} {{$enum.Name|go }} = {{.Name|quote}} 53 {{- end }} 54 ) 55 56 var All{{.Name|go }} = []{{ .Name|go }}{ 57 {{- range $value := .Values}} 58 {{$enum.Name|go }}{{ .Name|go }}, 59 {{- end }} 60 } 61 62 func (e {{.Name|go }}) IsValid() bool { 63 switch e { 64 case {{ range $index, $element := .Values}}{{if $index}},{{end}}{{ $enum.Name|go }}{{ $element.Name|go }}{{end}}: 65 return true 66 } 67 return false 68 } 69 70 func (e {{.Name|go }}) String() string { 71 return string(e) 72 } 73 74 func (e *{{.Name|go }}) UnmarshalGQL(v interface{}) error { 75 str, ok := v.(string) 76 if !ok { 77 return fmt.Errorf("enums must be strings") 78 } 79 80 *e = {{ .Name|go }}(str) 81 if !e.IsValid() { 82 return fmt.Errorf("%s is not a valid {{ .Name }}", str) 83 } 84 return nil 85 } 86 87 func (e {{.Name|go }}) MarshalGQL(w io.Writer) { 88 fmt.Fprint(w, strconv.Quote(e.String())) 89 } 90 91 {{- end }}