models.gotpl

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