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