diff options
Diffstat (limited to 'vendor/github.com/vektah/gqlgen/codegen/templates/models.gotpl')
-rw-r--r-- | vendor/github.com/vektah/gqlgen/codegen/templates/models.gotpl | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/vendor/github.com/vektah/gqlgen/codegen/templates/models.gotpl b/vendor/github.com/vektah/gqlgen/codegen/templates/models.gotpl new file mode 100644 index 00000000..e66266a5 --- /dev/null +++ b/vendor/github.com/vektah/gqlgen/codegen/templates/models.gotpl @@ -0,0 +1,65 @@ +// Code generated by github.com/vektah/gqlgen, DO NOT EDIT. + +package {{ .PackageName }} + +import ( +{{- range $import := .Imports }} + {{- $import.Write }} +{{ end }} +) + +{{ range $model := .Models }} + {{- if .IsInterface }} + type {{.GoType}} interface {} + {{- else }} + type {{.GoType}} struct { + {{- range $field := .Fields }} + {{- if $field.GoVarName }} + {{ $field.GoVarName }} {{$field.Signature}} `json:"{{$field.GQLName}}"` + {{- else }} + {{ $field.GoFKName }} {{$field.GoFKType}} + {{- end }} + {{- end }} + } + {{- end }} +{{- end}} + +{{ range $enum := .Enums }} + type {{.GoType}} string + const ( + {{ range $value := .Values -}} + {{with .Description}} {{.|prefixLines "// "}} {{end}} + {{$enum.GoType}}{{ .Name|toCamel }} {{$enum.GoType}} = {{.Name|quote}} + {{- end }} + ) + + func (e {{.GoType}}) IsValid() bool { + switch e { + case {{ range $index, $element := .Values}}{{if $index}},{{end}}{{ $enum.GoType }}{{ $element.Name|toCamel }}{{end}}: + return true + } + return false + } + + func (e {{.GoType}}) String() string { + return string(e) + } + + func (e *{{.GoType}}) UnmarshalGQL(v interface{}) error { + str, ok := v.(string) + if !ok { + return fmt.Errorf("enums must be strings") + } + + *e = {{.GoType}}(str) + if !e.IsValid() { + return fmt.Errorf("%s is not a valid {{.GQLType}}", str) + } + return nil + } + + func (e {{.GoType}}) MarshalGQL(w io.Writer) { + fmt.Fprint(w, strconv.Quote(e.String())) + } + +{{- end }} |