github.com/shish-dev/gqlgen@v0.99.0/codegen/input.gotpl (about) 1 {{- range $input := .Inputs }} 2 {{- if not .HasUnmarshal }} 3 func (ec *executionContext) unmarshalInput{{ .Name }}(ctx context.Context, obj interface{}) ({{.Type | ref}}, error) { 4 var it {{.Type | ref}} 5 asMap := map[string]interface{}{} 6 for k, v := range obj.(map[string]interface{}) { 7 asMap[k] = v 8 } 9 {{ range $field := .Fields}} 10 {{- if notNil "Default" $field }} 11 if _, present := asMap[{{$field.Name|quote}}] ; !present { 12 asMap[{{$field.Name|quote}}] = {{ $field.Default | dump }} 13 } 14 {{- end}} 15 {{- end }} 16 17 for k, v := range asMap { 18 switch k { 19 {{- range $field := .Fields }} 20 case {{$field.Name|quote}}: 21 var err error 22 23 ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField({{$field.Name|quote}})) 24 {{- if $field.ImplDirectives }} 25 directive0 := func(ctx context.Context) (interface{}, error) { return ec.{{ $field.TypeReference.UnmarshalFunc }}(ctx, v) } 26 {{ template "implDirectives" $field }} 27 tmp, err := directive{{$field.ImplDirectives|len}}(ctx) 28 if err != nil { 29 return it, graphql.ErrorOnPath(ctx, err) 30 } 31 if data, ok := tmp.({{ $field.TypeReference.GO | ref }}) ; ok { 32 {{- if $field.IsResolver }} 33 if err = ec.resolvers.{{ $field.ShortInvocation }}; err != nil { 34 return it, err 35 } 36 {{- else }} 37 it.{{$field.GoFieldName}} = data 38 {{- end }} 39 {{- if $field.TypeReference.IsNilable }} 40 {{- if not $field.IsResolver }} 41 } else if tmp == nil { 42 it.{{$field.GoFieldName}} = nil 43 {{- end }} 44 {{- end }} 45 } else { 46 err := fmt.Errorf(`unexpected type %T from directive, should be {{ $field.TypeReference.GO }}`, tmp) 47 return it, graphql.ErrorOnPath(ctx, err) 48 } 49 {{- else }} 50 {{- if $field.IsResolver }} 51 data, err := ec.{{ $field.TypeReference.UnmarshalFunc }}(ctx, v) 52 if err != nil { 53 return it, err 54 } 55 if err = ec.resolvers.{{ $field.ShortInvocation }}; err != nil { 56 return it, err 57 } 58 {{- else }} 59 it.{{$field.GoFieldName}}, err = ec.{{ $field.TypeReference.UnmarshalFunc }}(ctx, v) 60 if err != nil { 61 return it, err 62 } 63 {{- end }} 64 {{- end }} 65 {{- end }} 66 } 67 } 68 69 return it, nil 70 } 71 {{- end }} 72 {{ end }}