...

Text file src/github.com/99designs/gqlgen/plugin/modelgen/testdata/customModelTemplate.gotpl

Documentation: github.com/99designs/gqlgen/plugin/modelgen/testdata

     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