input.gotpl

 1	{{- if .IsMarshaled }}
 2	func Unmarshal{{ .GQLType }}(v interface{}) ({{.FullName}}, error) {
 3		var it {{.FullName}}
 4		var asMap = v.(map[string]interface{})
 5		{{ range $field := .Fields}}
 6			{{- if $field.Default}}
 7				if _, present := asMap[{{$field.GQLName|quote}}] ; !present {
 8					asMap[{{$field.GQLName|quote}}] = {{ $field.Default | dump }}
 9				}
10			{{- end}}
11		{{- end }}
12
13		for k, v := range asMap {
14			switch k {
15			{{- range $field := .Fields }}
16			case {{$field.GQLName|quote}}:
17				var err error
18				{{ $field.Unmarshal (print "it." $field.GoFieldName) "v" }}
19				if err != nil {
20					return it, err
21				}
22			{{- end }}
23			}
24		}
25
26		return it, nil
27	}
28	{{- end }}