aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/vektah/gqlgen/codegen/templates/input.gotpl
blob: 6073daf4ee6dc81ccd3f46a7130c99fde202bf3b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
	{{- if .IsMarshaled }}
	func Unmarshal{{ .GQLType }}(v interface{}) ({{.FullName}}, error) {
		var it {{.FullName}}
		var asMap = v.(map[string]interface{})
		{{ range $field := .Fields}}
			{{- if $field.Default}}
				if _, present := asMap[{{$field.GQLName|quote}}] ; !present {
					asMap[{{$field.GQLName|quote}}] = {{ $field.Default | dump }}
				}
			{{- end}}
		{{- end }}

		for k, v := range asMap {
			switch k {
			{{- range $field := .Fields }}
			case {{$field.GQLName|quote}}:
				var err error
				{{ $field.Unmarshal (print "it." $field.GoVarName) "v" }}
				if err != nil {
					return it, err
				}
			{{- end }}
			}
		}

		return it, nil
	}
	{{- end }}