field.gotpl

 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		{{- template "args.gotpl" $field.Args }}
 7		ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{Field: field})
 8		results, err := ec.resolvers.{{ $object.GQLType }}_{{ $field.GQLName }}({{ $field.CallArgs }})
 9		if err != nil {
10			ec.Error(ctx, err)
11			return nil
12		}
13		return func() graphql.Marshaler {
14			res, ok := <-results
15			if !ok {
16				return nil
17			}
18			var out graphql.OrderedMap
19			out.Add(field.Alias, func() graphql.Marshaler { {{ $field.WriteJson }} }())
20			return &out
21		}
22	}
23{{ else }}
24	func (ec *executionContext) _{{$object.GQLType}}_{{$field.GQLName}}(ctx context.Context, field graphql.CollectedField, {{if not $object.Root}}obj *{{$object.FullName}}{{end}}) graphql.Marshaler {
25		{{- template "args.gotpl" $field.Args }}
26
27		{{- if $field.IsConcurrent }}
28			ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{
29				Object: {{$object.GQLType|quote}},
30				Args: {{if $field.Args }}args{{else}}nil{{end}},
31				Field: field,
32			})
33			return graphql.Defer(func() (ret graphql.Marshaler) {
34				defer func() {
35					if r := recover(); r != nil {
36						userErr := ec.Recover(ctx, r)
37						ec.Error(ctx, userErr)
38						ret = graphql.Null
39					}
40				}()
41		{{ else }}
42			rctx := graphql.GetResolverContext(ctx)
43			rctx.Object = {{$object.GQLType|quote}}
44			rctx.Args = {{if $field.Args }}args{{else}}nil{{end}}
45			rctx.Field = field
46			rctx.PushField(field.Alias)
47			defer rctx.Pop()
48		{{- end }}
49
50			{{- if $field.IsResolver }}
51				resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) {
52					return ec.resolvers.{{ $object.GQLType }}_{{ $field.GQLName }}({{ $field.CallArgs }})
53				})
54				if err != nil {
55					ec.Error(ctx, err)
56					return graphql.Null
57				}
58				if resTmp == nil {
59					return graphql.Null
60				}
61				res := resTmp.({{$field.Signature}})
62			{{- else if $field.GoVarName }}
63				res := obj.{{$field.GoVarName}}
64			{{- else if $field.GoMethodName }}
65				{{- if $field.NoErr }}
66					res := {{$field.GoMethodName}}({{ $field.CallArgs }})
67				{{- else }}
68					res, err := {{$field.GoMethodName}}({{ $field.CallArgs }})
69					if err != nil {
70						ec.Error(ctx, err)
71						return graphql.Null
72					}
73				{{- end }}
74			{{- end }}
75			{{ $field.WriteJson }}
76		{{- if $field.IsConcurrent }}
77			})
78		{{- end }}
79	}
80{{ end }}