models.gotpl

 1// Code generated by github.com/99designs/gqlgen, DO NOT EDIT.
 2
 3package {{ .PackageName }}
 4
 5import (
 6{{- range $import := .Imports }}
 7	{{- $import.Write }}
 8{{ end }}
 9)
10
11{{ range $model := .Models }}
12	{{with .Description}} {{.|prefixLines "// "}} {{end}}
13	{{- if .IsInterface }}
14		type {{.GoType}} interface {}
15	{{- else }}
16		type {{.GoType}} struct {
17			{{- range $field := .Fields }}
18				{{- with .Description}}
19					{{.|prefixLines "// "}}
20				{{- end}}
21				{{- if $field.GoFieldName }}
22					{{ $field.GoFieldName }} {{$field.Signature}} `json:"{{$field.GQLName}}"`
23				{{- else }}
24					{{ $field.GoFKName }} {{$field.GoFKType}}
25				{{- end }}
26			{{- end }}
27		}
28	{{- end }}
29{{- end}}
30
31{{ range $enum := .Enums }}
32	{{with .Description}}{{.|prefixLines "// "}} {{end}}
33	type {{.GoType}} string
34	const (
35	{{- range $value := .Values}}
36		{{- with .Description}}
37			{{.|prefixLines "// "}}
38		{{- end}}
39		{{$enum.GoType}}{{ .Name|toCamel }} {{$enum.GoType}} = {{.Name|quote}}
40	{{- end }}
41	)
42
43	func (e {{.GoType}}) IsValid() bool {
44		switch e {
45		case {{ range $index, $element := .Values}}{{if $index}},{{end}}{{ $enum.GoType }}{{ $element.Name|toCamel }}{{end}}:
46			return true
47		}
48		return false
49	}
50
51	func (e {{.GoType}}) String() string {
52		return string(e)
53	}
54
55	func (e *{{.GoType}}) UnmarshalGQL(v interface{}) error {
56		str, ok := v.(string)
57		if !ok {
58			return fmt.Errorf("enums must be strings")
59		}
60
61		*e = {{.GoType}}(str)
62		if !e.IsValid() {
63			return fmt.Errorf("%s is not a valid {{.GQLType}}", str)
64		}
65		return nil
66	}
67
68	func (e {{.GoType}}) MarshalGQL(w io.Writer) {
69		fmt.Fprint(w, strconv.Quote(e.String()))
70	}
71
72{{- end }}