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 }}