aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/vektah/gqlgen/codegen/templates/input.gotpl
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/vektah/gqlgen/codegen/templates/input.gotpl')
-rw-r--r--vendor/github.com/vektah/gqlgen/codegen/templates/input.gotpl28
1 files changed, 28 insertions, 0 deletions
diff --git a/vendor/github.com/vektah/gqlgen/codegen/templates/input.gotpl b/vendor/github.com/vektah/gqlgen/codegen/templates/input.gotpl
new file mode 100644
index 00000000..6073daf4
--- /dev/null
+++ b/vendor/github.com/vektah/gqlgen/codegen/templates/input.gotpl
@@ -0,0 +1,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 }}