mirror of
https://github.com/stashapp/stash.git
synced 2025-12-18 04:44:37 +03:00
* Use vendor code for all go calls * Add missing vendor dependencies * Add travis_retry to yarn install * Fix go test call
101 lines
3.4 KiB
Plaintext
101 lines
3.4 KiB
Plaintext
{{- range $object := .Objects }}{{- range $field := $object.Fields }}
|
|
|
|
{{- if $object.Stream }}
|
|
func (ec *executionContext) _{{$object.Name}}_{{$field.Name}}(ctx context.Context, field graphql.CollectedField) func() graphql.Marshaler {
|
|
ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{
|
|
Field: field,
|
|
Args: nil,
|
|
})
|
|
{{- if $field.Args }}
|
|
rawArgs := field.ArgumentMap(ec.Variables)
|
|
args, err := ec.{{ $field.ArgsFunc }}(ctx,rawArgs)
|
|
if err != nil {
|
|
ec.Error(ctx, err)
|
|
return nil
|
|
}
|
|
{{- end }}
|
|
// FIXME: subscriptions are missing request middleware stack https://github.com/99designs/gqlgen/issues/259
|
|
// and Tracer stack
|
|
rctx := ctx
|
|
results, err := ec.resolvers.{{ $field.ShortInvocation }}
|
|
if err != nil {
|
|
ec.Error(ctx, err)
|
|
return nil
|
|
}
|
|
return func() graphql.Marshaler {
|
|
res, ok := <-results
|
|
if !ok {
|
|
return nil
|
|
}
|
|
return graphql.WriterFunc(func(w io.Writer) {
|
|
w.Write([]byte{'{'})
|
|
graphql.MarshalString(field.Alias).MarshalGQL(w)
|
|
w.Write([]byte{':'})
|
|
ec.{{ $field.TypeReference.MarshalFunc }}(ctx, field.Selections, res).MarshalGQL(w)
|
|
w.Write([]byte{'}'})
|
|
})
|
|
}
|
|
}
|
|
{{ else }}
|
|
func (ec *executionContext) _{{$object.Name}}_{{$field.Name}}(ctx context.Context, field graphql.CollectedField{{ if not $object.Root }}, obj {{$object.Reference | ref}}{{end}}) graphql.Marshaler {
|
|
ctx = ec.Tracer.StartFieldExecution(ctx, field)
|
|
defer func () { ec.Tracer.EndFieldExecution(ctx) }()
|
|
rctx := &graphql.ResolverContext{
|
|
Object: {{$object.Name|quote}},
|
|
Field: field,
|
|
Args: nil,
|
|
IsMethod: {{or $field.IsMethod $field.IsResolver}},
|
|
}
|
|
ctx = graphql.WithResolverContext(ctx, rctx)
|
|
{{- if $field.Args }}
|
|
rawArgs := field.ArgumentMap(ec.Variables)
|
|
args, err := ec.{{ $field.ArgsFunc }}(ctx,rawArgs)
|
|
if err != nil {
|
|
ec.Error(ctx, err)
|
|
return graphql.Null
|
|
}
|
|
rctx.Args = args
|
|
{{- end }}
|
|
ctx = ec.Tracer.StartFieldResolverExecution(ctx, rctx)
|
|
resTmp := ec.FieldMiddleware(ctx, {{if $object.Root}}nil{{else}}obj{{end}}, func(rctx context.Context) (interface{}, error) {
|
|
ctx = rctx // use context from middleware stack in children
|
|
{{- if $field.IsResolver }}
|
|
return ec.resolvers.{{ $field.ShortInvocation }}
|
|
{{- else if $field.IsMap }}
|
|
switch v := {{$field.GoReceiverName}}[{{$field.Name|quote}}].(type) {
|
|
case {{$field.TypeReference.GO | ref}}:
|
|
return v, nil
|
|
case {{$field.TypeReference.Elem.GO | ref}}:
|
|
return &v, nil
|
|
case nil:
|
|
return ({{$field.TypeReference.GO | ref}})(nil), nil
|
|
default:
|
|
return nil, fmt.Errorf("unexpected type %T for field %s", v, {{ $field.Name | quote}})
|
|
}
|
|
{{- else if $field.IsMethod }}
|
|
{{- if $field.NoErr }}
|
|
return {{$field.GoReceiverName}}.{{$field.GoFieldName}}({{ $field.CallArgs }}), nil
|
|
{{- else }}
|
|
return {{$field.GoReceiverName}}.{{$field.GoFieldName}}({{ $field.CallArgs }})
|
|
{{- end }}
|
|
{{- else if $field.IsVariable }}
|
|
return {{$field.GoReceiverName}}.{{$field.GoFieldName}}, nil
|
|
{{- end }}
|
|
})
|
|
if resTmp == nil {
|
|
{{- if $field.TypeReference.GQL.NonNull }}
|
|
if !ec.HasError(rctx) {
|
|
ec.Errorf(ctx, "must not be null")
|
|
}
|
|
{{- end }}
|
|
return graphql.Null
|
|
}
|
|
res := resTmp.({{$field.TypeReference.GO | ref}})
|
|
rctx.Result = res
|
|
ctx = ec.Tracer.StartFieldChildExecution(ctx)
|
|
return ec.{{ $field.TypeReference.MarshalFunc }}(ctx, field.Selections, res)
|
|
}
|
|
{{ end }}
|
|
|
|
{{- end }}{{- end}}
|