...
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 {{ goModelName .Name }} interface {
18 {{- if not .OmitCheck }}
19 {{- range $impl := .Implements }}
20 Is{{ goModelName $impl }}()
21 {{- end }}
22 Is{{ goModelName .Name }}()
23 {{- end }}
24 {{- range $field := .Fields }}
25 {{- with .Description }}
26 {{.|prefixLines "// "}}
27 {{- end}}
28 Get{{ $field.GoName }}() {{ $field.Type | ref }}
29 {{- end }}
30 }
31{{- end }}
32
33{{ range $model := .Models }}
34 {{with .Description }} {{.|prefixLines "// "}} {{end}}
35 type {{ goModelName .Name }} struct {
36 {{- range $field := .Fields }}
37 {{- with .Description }}
38 {{.|prefixLines "// "}}
39 {{- end}}
40 {{ $field.GoName }} {{$field.Type | ref}} `{{$field.Tag}}`
41 {{- end }}
42 }
43
44 {{ range .Implements }}
45 func ({{ goModelName $model.Name }}) Is{{ goModelName . }}() {}
46 {{- with getInterfaceByName . }}
47 {{- range .Fields }}
48 {{- with .Description }}
49 {{.|prefixLines "// "}}
50 {{- end}}
51 {{ generateGetter $model . }}
52 {{- end }}
53 {{- end }}
54 {{ end }}
55{{- end}}
56
57{{ range $enum := .Enums }}
58 {{ with .Description }} {{.|prefixLines "// "}} {{end}}
59 type {{ goModelName .Name }} string
60 const (
61 {{- range $value := .Values}}
62 {{- with .Description}}
63 {{.|prefixLines "// "}}
64 {{- end}}
65 {{ goModelName $enum.Name .Name }} {{ goModelName $enum.Name }} = {{ .Name|quote }}
66 {{- end }}
67 )
68
69 var All{{ goModelName .Name }} = []{{ goModelName .Name }}{
70 {{- range $value := .Values}}
71 {{ goModelName $enum.Name .Name }},
72 {{- end }}
73 }
74
75 func (e {{ goModelName .Name }}) IsValid() bool {
76 switch e {
77 case {{ range $index, $element := .Values}}{{if $index}},{{end}}{{ goModelName $enum.Name $element.Name }}{{end}}:
78 return true
79 }
80 return false
81 }
82
83 func (e {{ goModelName .Name }}) String() string {
84 return string(e)
85 }
86
87 func (e *{{ goModelName .Name }}) UnmarshalGQL(v interface{}) error {
88 str, ok := v.(string)
89 if !ok {
90 return fmt.Errorf("enums must be strings")
91 }
92
93 *e = {{ goModelName .Name }}(str)
94 if !e.IsValid() {
95 return fmt.Errorf("%s is not a valid {{ .Name }}", str)
96 }
97 return nil
98 }
99
100 func (e {{ goModelName .Name }}) MarshalGQL(w io.Writer) {
101 fmt.Fprint(w, strconv.Quote(e.String()))
102 }
103
104{{- end }}
View as plain text