github.com/fortexxx/gqlgen@v0.10.3-0.20191216030626-ca5ea8b21ead/codegen/args.gotpl (about)

     1  {{ range $name, $args := .Args }}
     2  func (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.ImplDirectives }}
     9  				directive0 := func(ctx context.Context) (interface{}, error) { return ec.{{ $arg.TypeReference.UnmarshalFunc }}(ctx, tmp) }
    10  				{{ template "implDirectives" $arg }}
    11  				tmp, err = directive{{$arg.ImplDirectives|len}}(ctx)
    12  				if err != nil {
    13  					return nil, err
    14  				}
    15  				if data, ok := tmp.({{ $arg.TypeReference.GO | ref }}) ; ok {
    16  					arg{{$i}} = data
    17  				{{- if $arg.TypeReference.IsNilable }}
    18  					} else if tmp == nil {
    19  						arg{{$i}} = nil
    20  				{{- end }}
    21  				} else {
    22  					return nil, fmt.Errorf(`unexpected type %T from directive, should be {{ $arg.TypeReference.GO }}`, tmp)
    23  				}
    24  			{{- else }}
    25  				arg{{$i}}, err = ec.{{ $arg.TypeReference.UnmarshalFunc }}(ctx, tmp)
    26  				if err != nil {
    27  					return nil, err
    28  				}
    29  			{{- end }}
    30  		}
    31  		args[{{$arg.Name|quote}}] = arg{{$i}}
    32  	{{- end }}
    33  	return args, nil
    34  }
    35  {{ end }}