github.com/matiasanaya/gqlgen@v0.6.0/codegen/templates/field.gotpl (about)

     1  {{ $field := . }}
     2  {{ $object := $field.Object }}
     3  
     4  {{- if $object.Stream }}
     5  	func (ec *executionContext) _{{$object.GQLType}}_{{$field.GQLName}}(ctx context.Context, field graphql.CollectedField) func() graphql.Marshaler {
     6  		{{- if $field.Args }}
     7  			rawArgs := field.ArgumentMap(ec.Variables)
     8  			args, err := {{ $field.ArgsFunc }}(rawArgs)
     9  			if err != nil {
    10  				ec.Error(ctx, err)
    11  				return nil
    12  			}
    13  		{{- end }}
    14  		ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{
    15  			Field: field,
    16  		})
    17  		rctx := ctx // FIXME: subscriptions are missing request middleware stack https://github.com/99designs/gqlgen/issues/259
    18  		results, err := ec.resolvers.{{ $field.ShortInvocation }}
    19  		if err != nil {
    20  			ec.Error(ctx, err)
    21  			return nil
    22  		}
    23  		return func() graphql.Marshaler {
    24  			res, ok := <-results
    25  			if !ok {
    26  				return nil
    27  			}
    28  			var out graphql.OrderedMap
    29  			out.Add(field.Alias, func() graphql.Marshaler { {{ $field.WriteJson }} }())
    30  			return &out
    31  		}
    32  	}
    33  {{ else }}
    34  	// nolint: vetshadow
    35  	func (ec *executionContext) _{{$object.GQLType}}_{{$field.GQLName}}(ctx context.Context, field graphql.CollectedField, {{if not $object.Root}}obj *{{$object.FullName}}{{end}}) graphql.Marshaler {
    36  		{{- if $field.Args }}
    37  			rawArgs := field.ArgumentMap(ec.Variables)
    38  			args, err := {{ $field.ArgsFunc }}(rawArgs)
    39  			if err != nil {
    40  				ec.Error(ctx, err)
    41  				return graphql.Null
    42  			}
    43  		{{- end }}
    44  		rctx := &graphql.ResolverContext{
    45  			Object: {{$object.GQLType|quote}},
    46  			Args: {{if $field.Args }}args{{else}}nil{{end}},
    47  			Field: field,
    48  		}
    49  		ctx = graphql.WithResolverContext(ctx, rctx)
    50  		resTmp := ec.FieldMiddleware(ctx, {{if $object.Root}}nil{{else}}obj{{end}}, func(rctx context.Context) (interface{}, error) {
    51  			ctx = rctx  // use context from middleware stack in children
    52  			{{- if $field.IsResolver }}
    53  				return ec.resolvers.{{ $field.ShortInvocation }}
    54  			{{- else if $field.IsMethod }}
    55  				{{- if $field.NoErr }}
    56  					return {{$field.GoReceiverName}}.{{$field.GoFieldName}}({{ $field.CallArgs }}), nil
    57  				{{- else }}
    58  					return {{$field.GoReceiverName}}.{{$field.GoFieldName}}({{ $field.CallArgs }})
    59  				{{- end }}
    60  			{{- else if $field.IsVariable }}
    61  				return {{$field.GoReceiverName}}.{{$field.GoFieldName}}, nil
    62  			{{- end }}
    63  		})
    64  		if resTmp == nil {
    65  			{{- if $field.ASTType.NonNull }}
    66  				if !ec.HasError(rctx) {
    67  					ec.Errorf(ctx, "must not be null")
    68  				}
    69  			{{- end }}
    70  			return graphql.Null
    71  		}
    72  		res := resTmp.({{$field.Signature}})
    73  		rctx.Result = res
    74  		{{ $field.WriteJson }}
    75  	}
    76  {{ end }}