github.com/HaswinVidanage/gqlgen@v0.8.1-0.20220609041233-69528c1bf712/codegen/object.gotpl (about)

     1  {{- range $object := .Objects }}
     2  
     3  var {{ $object.Name|lcFirst}}Implementors = {{$object.Implementors}}
     4  
     5  {{- if .Stream }}
     6  func (ec *executionContext) _{{$object.Name}}(ctx context.Context, sel ast.SelectionSet) func() graphql.Marshaler {
     7  	fields := graphql.CollectFields(ctx, sel, {{$object.Name|lcFirst}}Implementors)
     8  	ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{
     9  		Object: {{$object.Name|quote}},
    10  	})
    11  	if len(fields) != 1 {
    12  		ec.Errorf(ctx, "must subscribe to exactly one stream")
    13  		return nil
    14  	}
    15  
    16  	switch fields[0].Name {
    17  	{{- range $field := $object.Fields }}
    18  	case "{{$field.Name}}":
    19  		return ec._{{$object.Name}}_{{$field.Name}}(ctx, fields[0])
    20  	{{- end }}
    21  	default:
    22  		panic("unknown field " + strconv.Quote(fields[0].Name))
    23  	}
    24  }
    25  {{- else }}
    26  func (ec *executionContext) _{{$object.Name}}(ctx context.Context, sel ast.SelectionSet{{ if not $object.Root }},obj *{{$object.Type | ref }}{{ end }}) graphql.Marshaler {
    27  	fields := graphql.CollectFields(ctx, sel, {{$object.Name|lcFirst}}Implementors)
    28  	{{if $object.Root}}
    29  		ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{
    30  			Object: {{$object.Name|quote}},
    31  		})
    32  	{{end}}
    33  
    34  	out := graphql.NewFieldSet(fields)
    35  	invalid := false
    36  	for i, field := range fields {
    37  		switch field.Name {
    38  		case "__typename":
    39  			out.Values[i] = graphql.MarshalString({{$object.Name|quote}})
    40  		{{- range $field := $object.Fields }}
    41  		case "{{$field.Name}}":
    42  			{{- if $field.IsConcurrent }}
    43  				field := field
    44  				out.Concurrently(i, func() (res graphql.Marshaler) {
    45  					defer func() {
    46  						if r := recover(); r != nil {
    47  							ec.Error(ctx, ec.Recover(ctx, r))
    48  						}
    49  					}()
    50  					res = ec._{{$object.Name}}_{{$field.Name}}(ctx, field{{if not $object.Root}}, obj{{end}})
    51  					{{- if $field.TypeReference.GQL.NonNull }}
    52  						if res == graphql.Null {
    53  							invalid = true
    54  						}
    55  					{{- end }}
    56  					return res
    57  				})
    58  			{{- else }}
    59  				out.Values[i] = ec._{{$object.Name}}_{{$field.Name}}(ctx, field{{if not $object.Root}}, obj{{end}})
    60  				{{- if $field.TypeReference.GQL.NonNull }}
    61  					if out.Values[i] == graphql.Null {
    62  						invalid = true
    63  					}
    64  				{{- end }}
    65  			{{- end }}
    66  		{{- end }}
    67  		default:
    68  			panic("unknown field " + strconv.Quote(field.Name))
    69  		}
    70  	}
    71  	out.Dispatch()
    72  	if invalid { return graphql.Null }
    73  	return out
    74  }
    75  {{- end }}
    76  
    77  {{- end }}