1{{ range $name, $args := .Args }}
2func (ec *executionContext) {{ $name }}(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) {
3 var err error
4 args := map[string]interface{}{}
5 {{- range $i, $arg := . }}
6 var arg{{$i}} {{ $arg.TypeReference.GO | ref}}
7 if tmp, ok := rawArgs[{{$arg.Name|quote}}]; ok {
8 {{- if $arg.Directives }}
9 getArg0 := func(ctx context.Context) (interface{}, error) { return ec.{{ $arg.TypeReference.UnmarshalFunc }}(ctx, tmp) }
10
11 {{- range $i, $directive := $arg.Directives }}
12 getArg{{add $i 1}} := func(ctx context.Context) (res interface{}, err error) {
13 {{- range $dArg := $directive.Args }}
14 {{- if and $dArg.TypeReference.IsPtr ( notNil "Value" $dArg ) }}
15 {{ $dArg.VarName }} := {{ $dArg.Value | dump }}
16 {{- end }}
17 {{- end }}
18 n := getArg{{$i}}
19 return ec.directives.{{$directive.Name|ucFirst}}({{$directive.ResolveArgs "tmp" "n" }})
20 }
21 {{- end }}
22
23 tmp, err = getArg{{$arg.Directives|len}}(ctx)
24 if err != nil {
25 return nil, err
26 }
27 if data, ok := tmp.({{ $arg.TypeReference.GO | ref }}) ; ok {
28 arg{{$i}} = data
29 } else {
30 return nil, fmt.Errorf(`unexpected type %T from directive, should be {{ $arg.TypeReference.GO }}`, tmp)
31 }
32 {{- else }}
33 arg{{$i}}, err = ec.{{ $arg.TypeReference.UnmarshalFunc }}(ctx, tmp)
34 if err != nil {
35 return nil, err
36 }
37 {{- end }}
38 }
39 args[{{$arg.Name|quote}}] = arg{{$i}}
40 {{- end }}
41 return args, nil
42}
43{{ end }}