diff --git a/.gitattributes b/.gitattributes index f6ffcb7da1e..df1ea743119 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,3 @@ /codegen/templates/data.go linguist-generated /example/dataloader/*_gen.go linguist-generated +generated.go linguist-generated diff --git a/codegen/templates/data.go b/codegen/templates/data.go index c7b2f380d37..72f211f2652 100644 --- a/codegen/templates/data.go +++ b/codegen/templates/data.go @@ -1,11 +1,11 @@ package templates var data = map[string]string{ - "args.gotpl": "\t{{- if . }}args := map[string]interface{}{} {{end}}\n\t{{- range $i, $arg := . }}\n\t\tvar arg{{$i}} {{$arg.Signature }}\n\t\tif tmp, ok := field.Args[{{$arg.GQLName|quote}}]; ok {\n\t\t\tvar err error\n\t\t\t{{$arg.Unmarshal (print \"arg\" $i) \"tmp\" }}\n\t\t\tif err != nil {\n\t\t\t\tec.Error(err)\n\t\t\t\t{{- if $arg.Object.Stream }}\n\t\t\t\t\treturn nil\n\t\t\t\t{{- else }}\n\t\t\t\t\treturn graphql.Null\n\t\t\t\t{{- end }}\n\t\t\t}\n\t\t} {{ if $arg.Default }} else {\n\t\t\tvar tmp interface{} = {{ $arg.Default | dump }}\n\t\t\tvar err error\n\t\t\t{{$arg.Unmarshal (print \"arg\" $i) \"tmp\" }}\n\t\t\tif err != nil {\n\t\t\t\tec.Error(err)\n\t\t\t\t{{- if $arg.Object.Stream }}\n\t\t\t\t\treturn nil\n\t\t\t\t{{- else }}\n\t\t\t\t\treturn graphql.Null\n\t\t\t\t{{- end }}\n\t\t\t}\n\t\t}\n\t\t{{end }}\n\t\targs[{{$arg.GQLName|quote}}] = arg{{$i}}\n\t{{- end -}}\n", - "field.gotpl": "{{ $field := . }}\n{{ $object := $field.Object }}\n\n{{- if $object.Stream }}\n\tfunc (ec *executionContext) _{{$object.GQLType}}_{{$field.GQLName}}(ctx context.Context, field graphql.CollectedField) func() graphql.Marshaler {\n\t\t{{- template \"args.gotpl\" $field.Args }}\n\t\trctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{Field: field})\n\t\tresults, err := ec.resolvers.{{ $object.GQLType }}_{{ $field.GQLName }}({{ $field.CallArgs }})\n\t\tif err != nil {\n\t\t\tec.Error(err)\n\t\t\treturn nil\n\t\t}\n\t\treturn func() graphql.Marshaler {\n\t\t\tres, ok := <-results\n\t\t\tif !ok {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tvar out graphql.OrderedMap\n\t\t\tout.Add(field.Alias, func() graphql.Marshaler { {{ $field.WriteJson }} }())\n\t\t\treturn &out\n\t\t}\n\t}\n{{ else }}\n\tfunc (ec *executionContext) _{{$object.GQLType}}_{{$field.GQLName}}(ctx context.Context, field graphql.CollectedField, {{if not $object.Root}}obj *{{$object.FullName}}{{end}}) graphql.Marshaler {\n\t\t{{- template \"args.gotpl\" $field.Args }}\n\n\t\t{{- if $field.IsConcurrent }}\n\t\t\treturn graphql.Defer(func() (ret graphql.Marshaler) {\n\t\t\t\tdefer func() {\n\t\t\t\t\tif r := recover(); r != nil {\n\t\t\t\t\t\tuserErr := ec.Recover(ctx, r)\n\t\t\t\t\t\tec.Error(userErr)\n\t\t\t\t\t\tret = graphql.Null\n\t\t\t\t\t}\n\t\t\t\t}()\n\t\t{{- end }}\n\n\t\t\t{{- if $field.GoVarName }}\n\t\t\t\tres := obj.{{$field.GoVarName}}\n\t\t\t{{- else if $field.GoMethodName }}\n\t\t\t\t{{- if $field.NoErr }}\n\t\t\t\t\tres := {{$field.GoMethodName}}({{ $field.CallArgs }})\n\t\t\t\t{{- else }}\n\t\t\t\t\tres, err := {{$field.GoMethodName}}({{ $field.CallArgs }})\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tec.Error(err)\n\t\t\t\t\t\treturn graphql.Null\n\t\t\t\t\t}\n\t\t\t\t{{- end }}\n\t\t\t{{- else }}\n\t\t\t\trctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{\n\t\t\t\t\tObject: {{$object.GQLType|quote}},\n\t\t\t\t\tArgs: {{if $field.Args }}args{{else}}nil{{end}},\n\t\t\t\t\tField: field,\n\t\t\t\t})\n\t\t\t\tresTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) {\n\t\t\t\t\treturn ec.resolvers.{{ $object.GQLType }}_{{ $field.GQLName }}({{ $field.CallArgs }})\n\t\t\t\t})\n\t\t\t\tif err != nil {\n\t\t\t\t\tec.Error(err)\n\t\t\t\t\treturn graphql.Null\n\t\t\t\t}\n\t\t\t\tif resTmp == nil {\n\t\t\t\t\treturn graphql.Null\n\t\t\t\t}\n\t\t\t\tres := resTmp.({{$field.Signature}})\n\t\t\t{{- end }}\n\t\t\t{{ $field.WriteJson }}\n\t\t{{- if $field.IsConcurrent }}\n\t\t\t})\n\t\t{{- end }}\n\t}\n{{ end }}\n", - "generated.gotpl": "// This file was generated by github.com/vektah/gqlgen, DO NOT EDIT\n\npackage {{ .PackageName }}\n\nimport (\n{{- range $import := .Imports }}\n\t{{- $import.Write }}\n{{ end }}\n)\n\nfunc MakeExecutableSchema(resolvers Resolvers) graphql.ExecutableSchema {\n\treturn &executableSchema{resolvers: resolvers}\n}\n\ntype Resolvers interface {\n{{- range $object := .Objects -}}\n\t{{ range $field := $object.Fields -}}\n\t\t{{ $field.ResolverDeclaration }}\n\t{{ end }}\n{{- end }}\n}\n\ntype executableSchema struct {\n\tresolvers Resolvers\n}\n\nfunc (e *executableSchema) Schema() *schema.Schema {\n\treturn parsedSchema\n}\n\nfunc (e *executableSchema) Query(ctx context.Context, op *query.Operation) *graphql.Response {\n\t{{- if .QueryRoot }}\n\t\tec := executionContext{graphql.GetRequestContext(ctx), e.resolvers}\n\n\t\tbuf := ec.RequestMiddleware(ctx, func(ctx context.Context) []byte {\n\t\t\tdata := ec._{{.QueryRoot.GQLType}}(ctx, op.Selections)\n\t\t\tvar buf bytes.Buffer\n\t\t\tdata.MarshalGQL(&buf)\n\t\t\treturn buf.Bytes()\n\t\t})\n\n\t\treturn &graphql.Response{\n\t\t\tData: buf,\n\t\t\tErrors: ec.Errors,\n\t\t}\n\t{{- else }}\n\t\treturn &graphql.Response{Errors: []*errors.QueryError{ {Message: \"queries are not supported\"} }}\n\t{{- end }}\n}\n\nfunc (e *executableSchema) Mutation(ctx context.Context, op *query.Operation) *graphql.Response {\n\t{{- if .MutationRoot }}\n\t\tec := executionContext{graphql.GetRequestContext(ctx), e.resolvers}\n\n\t\tbuf := ec.RequestMiddleware(ctx, func(ctx context.Context) []byte {\n\t\t\tdata := ec._{{.MutationRoot.GQLType}}(ctx, op.Selections)\n\t\t\tvar buf bytes.Buffer\n\t\t\tdata.MarshalGQL(&buf)\n\t\t\treturn buf.Bytes()\n\t\t})\n\n\t\treturn &graphql.Response{\n\t\t\tData: buf,\n\t\t\tErrors: ec.Errors,\n\t\t}\n\t{{- else }}\n\t\treturn &graphql.Response{Errors: []*errors.QueryError{ {Message: \"mutations are not supported\"} }}\n\t{{- end }}\n}\n\nfunc (e *executableSchema) Subscription(ctx context.Context, op *query.Operation) func() *graphql.Response {\n\t{{- if .SubscriptionRoot }}\n\t\tec := executionContext{graphql.GetRequestContext(ctx), e.resolvers}\n\n\t\tnext := ec._{{.SubscriptionRoot.GQLType}}(ctx, op.Selections)\n\t\tif ec.Errors != nil {\n\t\t\treturn graphql.OneShot(&graphql.Response{Data: []byte(\"null\"), Errors: ec.Errors})\n\t\t}\n\n\t\tvar buf bytes.Buffer\n\t\treturn func() *graphql.Response {\n\t\t\tbuf := ec.RequestMiddleware(ctx, func(ctx context.Context) []byte {\n\t\t\t\tbuf.Reset()\n\t\t\t\tdata := next()\n\n\t\t\t\tif data == nil {\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\tdata.MarshalGQL(&buf)\n\t\t\t\treturn buf.Bytes()\n\t\t\t})\n\n\t\t\treturn &graphql.Response{\n\t\t\t\tData: buf,\n\t\t\t\tErrors: ec.Errors,\n\t\t\t}\n\t\t}\n\t{{- else }}\n\t\treturn graphql.OneShot(&graphql.Response{Errors: []*errors.QueryError{ {Message: \"subscriptions are not supported\"} }})\n\t{{- end }}\n}\n\ntype executionContext struct {\n\t*graphql.RequestContext\n\n\tresolvers Resolvers\n}\n\n{{- range $object := .Objects }}\n\t{{ template \"object.gotpl\" $object }}\n\n\t{{- range $field := $object.Fields }}\n\t\t{{ template \"field.gotpl\" $field }}\n\t{{ end }}\n{{- end}}\n\n{{- range $interface := .Interfaces }}\n\t{{ template \"interface.gotpl\" $interface }}\n{{- end }}\n\n{{- range $input := .Inputs }}\n\t{{ template \"input.gotpl\" $input }}\n{{- end }}\n\nfunc (ec *executionContext) introspectSchema() *introspection.Schema {\n\treturn introspection.WrapSchema(parsedSchema)\n}\n\nfunc (ec *executionContext) introspectType(name string) *introspection.Type {\n\tt := parsedSchema.Resolve(name)\n\tif t == nil {\n\t\treturn nil\n\t}\n\treturn introspection.WrapType(t)\n}\n\nvar parsedSchema = schema.MustParse({{.SchemaRaw|rawQuote}})\n", + "args.gotpl": "\t{{- if . }}args := map[string]interface{}{} {{end}}\n\t{{- range $i, $arg := . }}\n\t\tvar arg{{$i}} {{$arg.Signature }}\n\t\tif tmp, ok := field.Args[{{$arg.GQLName|quote}}]; ok {\n\t\t\tvar err error\n\t\t\t{{$arg.Unmarshal (print \"arg\" $i) \"tmp\" }}\n\t\t\tif err != nil {\n\t\t\t\tec.Error(ctx, err)\n\t\t\t\t{{- if $arg.Object.Stream }}\n\t\t\t\t\treturn nil\n\t\t\t\t{{- else }}\n\t\t\t\t\treturn graphql.Null\n\t\t\t\t{{- end }}\n\t\t\t}\n\t\t} {{ if $arg.Default }} else {\n\t\t\tvar tmp interface{} = {{ $arg.Default | dump }}\n\t\t\tvar err error\n\t\t\t{{$arg.Unmarshal (print \"arg\" $i) \"tmp\" }}\n\t\t\tif err != nil {\n\t\t\t\tec.Error(ctx, err)\n\t\t\t\t{{- if $arg.Object.Stream }}\n\t\t\t\t\treturn nil\n\t\t\t\t{{- else }}\n\t\t\t\t\treturn graphql.Null\n\t\t\t\t{{- end }}\n\t\t\t}\n\t\t}\n\t\t{{end }}\n\t\targs[{{$arg.GQLName|quote}}] = arg{{$i}}\n\t{{- end -}}\n", + "field.gotpl": "{{ $field := . }}\n{{ $object := $field.Object }}\n\n{{- if $object.Stream }}\n\tfunc (ec *executionContext) _{{$object.GQLType}}_{{$field.GQLName}}(ctx context.Context, field graphql.CollectedField) func() graphql.Marshaler {\n\t\t{{- template \"args.gotpl\" $field.Args }}\n\t\tctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{Field: field})\n\t\tresults, err := ec.resolvers.{{ $object.GQLType }}_{{ $field.GQLName }}({{ $field.CallArgs }})\n\t\tif err != nil {\n\t\t\tec.Error(ctx, err)\n\t\t\treturn nil\n\t\t}\n\t\treturn func() graphql.Marshaler {\n\t\t\tres, ok := <-results\n\t\t\tif !ok {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tvar out graphql.OrderedMap\n\t\t\tout.Add(field.Alias, func() graphql.Marshaler { {{ $field.WriteJson }} }())\n\t\t\treturn &out\n\t\t}\n\t}\n{{ else }}\n\tfunc (ec *executionContext) _{{$object.GQLType}}_{{$field.GQLName}}(ctx context.Context, field graphql.CollectedField, {{if not $object.Root}}obj *{{$object.FullName}}{{end}}) graphql.Marshaler {\n\t\t{{- template \"args.gotpl\" $field.Args }}\n\n\t\t{{- if $field.IsConcurrent }}\n\t\t\tctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{\n\t\t\t\tObject: {{$object.GQLType|quote}},\n\t\t\t\tArgs: {{if $field.Args }}args{{else}}nil{{end}},\n\t\t\t\tField: field,\n\t\t\t})\n\t\t\treturn graphql.Defer(func() (ret graphql.Marshaler) {\n\t\t\t\tdefer func() {\n\t\t\t\t\tif r := recover(); r != nil {\n\t\t\t\t\t\tuserErr := ec.Recover(ctx, r)\n\t\t\t\t\t\tec.Error(ctx, userErr)\n\t\t\t\t\t\tret = graphql.Null\n\t\t\t\t\t}\n\t\t\t\t}()\n\t\t{{ else }}\n\t\t\trctx := graphql.GetResolverContext(ctx)\n\t\t\trctx.Object = {{$object.GQLType|quote}}\n\t\t\trctx.Args = {{if $field.Args }}args{{else}}nil{{end}}\n\t\t\trctx.Field = field\n\t\t\trctx.PushField(field.Alias)\n\t\t\tdefer rctx.Pop()\n\t\t{{- end }}\n\n\t\t\t{{- if $field.GoVarName }}\n\t\t\t\tres := obj.{{$field.GoVarName}}\n\t\t\t{{- else if $field.GoMethodName }}\n\t\t\t\t{{- if $field.NoErr }}\n\t\t\t\t\tres := {{$field.GoMethodName}}({{ $field.CallArgs }})\n\t\t\t\t{{- else }}\n\t\t\t\t\tres, err := {{$field.GoMethodName}}({{ $field.CallArgs }})\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tec.Error(ctx, err)\n\t\t\t\t\t\treturn graphql.Null\n\t\t\t\t\t}\n\t\t\t\t{{- end }}\n\t\t\t{{- else }}\n\n\t\t\t\tresTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) {\n\t\t\t\t\treturn ec.resolvers.{{ $object.GQLType }}_{{ $field.GQLName }}({{ $field.CallArgs }})\n\t\t\t\t})\n\t\t\t\tif err != nil {\n\t\t\t\t\tec.Error(ctx, err)\n\t\t\t\t\treturn graphql.Null\n\t\t\t\t}\n\t\t\t\tif resTmp == nil {\n\t\t\t\t\treturn graphql.Null\n\t\t\t\t}\n\t\t\t\tres := resTmp.({{$field.Signature}})\n\t\t\t{{- end }}\n\t\t\t{{ $field.WriteJson }}\n\t\t{{- if $field.IsConcurrent }}\n\t\t\t})\n\t\t{{- end }}\n\t}\n{{ end }}\n", + "generated.gotpl": "// This file was generated by github.com/vektah/gqlgen, DO NOT EDIT\n\npackage {{ .PackageName }}\n\nimport (\n{{- range $import := .Imports }}\n\t{{- $import.Write }}\n{{ end }}\n)\n\nfunc MakeExecutableSchema(resolvers Resolvers) graphql.ExecutableSchema {\n\treturn &executableSchema{resolvers: resolvers}\n}\n\ntype Resolvers interface {\n{{- range $object := .Objects -}}\n\t{{ range $field := $object.Fields -}}\n\t\t{{ $field.ResolverDeclaration }}\n\t{{ end }}\n{{- end }}\n}\n\ntype executableSchema struct {\n\tresolvers Resolvers\n}\n\nfunc (e *executableSchema) Schema() *schema.Schema {\n\treturn parsedSchema\n}\n\nfunc (e *executableSchema) Query(ctx context.Context, op *query.Operation) *graphql.Response {\n\t{{- if .QueryRoot }}\n\t\tec := executionContext{graphql.GetRequestContext(ctx), e.resolvers}\n\n\t\tbuf := ec.RequestMiddleware(ctx, func(ctx context.Context) []byte {\n\t\t\tdata := ec._{{.QueryRoot.GQLType}}(ctx, op.Selections)\n\t\t\tvar buf bytes.Buffer\n\t\t\tdata.MarshalGQL(&buf)\n\t\t\treturn buf.Bytes()\n\t\t})\n\n\t\treturn &graphql.Response{\n\t\t\tData: buf,\n\t\t\tErrors: ec.Errors,\n\t\t}\n\t{{- else }}\n\t\treturn graphql.ErrorResponse(ctx, \"queries are not supported\")\n\t{{- end }}\n}\n\nfunc (e *executableSchema) Mutation(ctx context.Context, op *query.Operation) *graphql.Response {\n\t{{- if .MutationRoot }}\n\t\tec := executionContext{graphql.GetRequestContext(ctx), e.resolvers}\n\n\t\tbuf := ec.RequestMiddleware(ctx, func(ctx context.Context) []byte {\n\t\t\tdata := ec._{{.MutationRoot.GQLType}}(ctx, op.Selections)\n\t\t\tvar buf bytes.Buffer\n\t\t\tdata.MarshalGQL(&buf)\n\t\t\treturn buf.Bytes()\n\t\t})\n\n\t\treturn &graphql.Response{\n\t\t\tData: buf,\n\t\t\tErrors: ec.Errors,\n\t\t}\n\t{{- else }}\n\t\treturn graphql.ErrorResponse(ctx, \"mutations are not supported\")\n\t{{- end }}\n}\n\nfunc (e *executableSchema) Subscription(ctx context.Context, op *query.Operation) func() *graphql.Response {\n\t{{- if .SubscriptionRoot }}\n\t\tec := executionContext{graphql.GetRequestContext(ctx), e.resolvers}\n\n\t\tnext := ec._{{.SubscriptionRoot.GQLType}}(ctx, op.Selections)\n\t\tif ec.Errors != nil {\n\t\t\treturn graphql.OneShot(&graphql.Response{Data: []byte(\"null\"), Errors: ec.Errors})\n\t\t}\n\n\t\tvar buf bytes.Buffer\n\t\treturn func() *graphql.Response {\n\t\t\tbuf := ec.RequestMiddleware(ctx, func(ctx context.Context) []byte {\n\t\t\t\tbuf.Reset()\n\t\t\t\tdata := next()\n\n\t\t\t\tif data == nil {\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\tdata.MarshalGQL(&buf)\n\t\t\t\treturn buf.Bytes()\n\t\t\t})\n\n\t\t\treturn &graphql.Response{\n\t\t\t\tData: buf,\n\t\t\t\tErrors: ec.Errors,\n\t\t\t}\n\t\t}\n\t{{- else }}\n\t\treturn graphql.OneShot(graphql.ErrorResponse(ctx, \"subscriptions are not supported\"))\n\t{{- end }}\n}\n\ntype executionContext struct {\n\t*graphql.RequestContext\n\n\tresolvers Resolvers\n}\n\n{{- range $object := .Objects }}\n\t{{ template \"object.gotpl\" $object }}\n\n\t{{- range $field := $object.Fields }}\n\t\t{{ template \"field.gotpl\" $field }}\n\t{{ end }}\n{{- end}}\n\n{{- range $interface := .Interfaces }}\n\t{{ template \"interface.gotpl\" $interface }}\n{{- end }}\n\n{{- range $input := .Inputs }}\n\t{{ template \"input.gotpl\" $input }}\n{{- end }}\n\nfunc (ec *executionContext) introspectSchema() *introspection.Schema {\n\treturn introspection.WrapSchema(parsedSchema)\n}\n\nfunc (ec *executionContext) introspectType(name string) *introspection.Type {\n\tt := parsedSchema.Resolve(name)\n\tif t == nil {\n\t\treturn nil\n\t}\n\treturn introspection.WrapType(t)\n}\n\nvar parsedSchema = schema.MustParse({{.SchemaRaw|rawQuote}})\n", "input.gotpl": "\t{{- if .IsMarshaled }}\n\tfunc Unmarshal{{ .GQLType }}(v interface{}) ({{.FullName}}, error) {\n\t\tvar it {{.FullName}}\n\n\t\tfor k, v := range v.(map[string]interface{}) {\n\t\t\tswitch k {\n\t\t\t{{- range $field := .Fields }}\n\t\t\tcase {{$field.GQLName|quote}}:\n\t\t\t\tvar err error\n\t\t\t\t{{ $field.Unmarshal (print \"it.\" $field.GoVarName) \"v\" }}\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn it, err\n\t\t\t\t}\n\t\t\t{{- end }}\n\t\t\t}\n\t\t}\n\n\t\treturn it, nil\n\t}\n\t{{- end }}\n", "interface.gotpl": "{{- $interface := . }}\n\nfunc (ec *executionContext) _{{$interface.GQLType}}(ctx context.Context, sel []query.Selection, obj *{{$interface.FullName}}) graphql.Marshaler {\n\tswitch obj := (*obj).(type) {\n\tcase nil:\n\t\treturn graphql.Null\n\t{{- range $implementor := $interface.Implementors }}\n\t\t{{- if $implementor.ValueReceiver }}\n\t\t\tcase {{$implementor.FullName}}:\n\t\t\t\treturn ec._{{$implementor.GQLType}}(ctx, sel, &obj)\n\t\t{{- end}}\n\t\tcase *{{$implementor.FullName}}:\n\t\t\treturn ec._{{$implementor.GQLType}}(ctx, sel, obj)\n\t{{- end }}\n\tdefault:\n\t\tpanic(fmt.Errorf(\"unexpected type %T\", obj))\n\t}\n}\n", "models.gotpl": "// This file was generated by github.com/vektah/gqlgen, DO NOT EDIT\n\npackage {{ .PackageName }}\n\nimport (\n{{- range $import := .Imports }}\n\t{{- $import.Write }}\n{{ end }}\n)\n\n{{ range $model := .Models }}\n\t{{- if .IsInterface }}\n\t\ttype {{.GoType}} interface {}\n\t{{- else }}\n\t\ttype {{.GoType}} struct {\n\t\t\t{{- range $field := .Fields }}\n\t\t\t\t{{- if $field.GoVarName }}\n\t\t\t\t\t{{ $field.GoVarName }} {{$field.Signature}}\n\t\t\t\t{{- else }}\n\t\t\t\t\t{{ $field.GoFKName }} {{$field.GoFKType}}\n\t\t\t\t{{- end }}\n\t\t\t{{- end }}\n\t\t}\n\t{{- end }}\n{{- end}}\n\n{{ range $enum := .Enums }}\n\ttype {{.GoType}} string\n\tconst (\n\t{{ range $value := .Values }}\n\t\t{{$enum.GoType}}{{ .Name|toCamel }} {{$enum.GoType}} = {{.Name|quote}} {{with .Description}} // {{.}} {{end}}\n\t{{- end }}\n\t)\n\n\tfunc (e {{.GoType}}) IsValid() bool {\n\t\tswitch e {\n\t\tcase {{ range $index, $element := .Values}}{{if $index}},{{end}}{{ $enum.GoType }}{{ $element.Name|toCamel }}{{end}}:\n\t\t\treturn true\n\t\t}\n\t\treturn false\n\t}\n\n\tfunc (e {{.GoType}}) String() string {\n\t\treturn string(e)\n\t}\n\n\tfunc (e *{{.GoType}}) UnmarshalGQL(v interface{}) error {\n\t\tstr, ok := v.(string)\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"enums must be strings\")\n\t\t}\n\n\t\t*e = {{.GoType}}(str)\n\t\tif !e.IsValid() {\n\t\t\treturn fmt.Errorf(\"%s is not a valid {{.GQLType}}\", str)\n\t\t}\n\t\treturn nil\n\t}\n\n\tfunc (e {{.GoType}}) MarshalGQL(w io.Writer) {\n\t\tfmt.Fprint(w, strconv.Quote(e.String()))\n\t}\n\n{{- end }}\n", - "object.gotpl": "{{ $object := . }}\n\nvar {{ $object.GQLType|lcFirst}}Implementors = {{$object.Implementors}}\n\n// nolint: gocyclo, errcheck, gas, goconst\n{{- if .Stream }}\nfunc (ec *executionContext) _{{$object.GQLType}}(ctx context.Context, sel []query.Selection) func() graphql.Marshaler {\n\tfields := graphql.CollectFields(ec.Doc, sel, {{$object.GQLType|lcFirst}}Implementors, ec.Variables)\n\n\tif len(fields) != 1 {\n\t\tec.Errorf(\"must subscribe to exactly one stream\")\n\t\treturn nil\n\t}\n\n\tswitch fields[0].Name {\n\t{{- range $field := $object.Fields }}\n\tcase \"{{$field.GQLName}}\":\n\t\treturn ec._{{$object.GQLType}}_{{$field.GQLName}}(ctx, fields[0])\n\t{{- end }}\n\tdefault:\n\t\tpanic(\"unknown field \" + strconv.Quote(fields[0].Name))\n\t}\n}\n{{- else }}\nfunc (ec *executionContext) _{{$object.GQLType}}(ctx context.Context, sel []query.Selection{{if not $object.Root}}, obj *{{$object.FullName}} {{end}}) graphql.Marshaler {\n\tfields := graphql.CollectFields(ec.Doc, sel, {{$object.GQLType|lcFirst}}Implementors, ec.Variables)\n\tout := graphql.NewOrderedMap(len(fields))\n\tfor i, field := range fields {\n\t\tout.Keys[i] = field.Alias\n\n\t\tswitch field.Name {\n\t\tcase \"__typename\":\n\t\t\tout.Values[i] = graphql.MarshalString({{$object.GQLType|quote}})\n\t\t{{- range $field := $object.Fields }}\n\t\tcase \"{{$field.GQLName}}\":\n\t\t\tout.Values[i] = ec._{{$object.GQLType}}_{{$field.GQLName}}(ctx, field{{if not $object.Root}}, obj{{end}})\n\t\t{{- end }}\n\t\tdefault:\n\t\t\tpanic(\"unknown field \" + strconv.Quote(field.Name))\n\t\t}\n\t}\n\n\treturn out\n}\n{{- end }}\n", + "object.gotpl": "{{ $object := . }}\n\nvar {{ $object.GQLType|lcFirst}}Implementors = {{$object.Implementors}}\n\n// nolint: gocyclo, errcheck, gas, goconst\n{{- if .Stream }}\nfunc (ec *executionContext) _{{$object.GQLType}}(ctx context.Context, sel []query.Selection) func() graphql.Marshaler {\n\tfields := graphql.CollectFields(ec.Doc, sel, {{$object.GQLType|lcFirst}}Implementors, ec.Variables)\n\tctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{\n\t\tObject: {{$object.GQLType|quote}},\n\t})\n\tif len(fields) != 1 {\n\t\tec.Errorf(ctx, \"must subscribe to exactly one stream\")\n\t\treturn nil\n\t}\n\n\tswitch fields[0].Name {\n\t{{- range $field := $object.Fields }}\n\tcase \"{{$field.GQLName}}\":\n\t\treturn ec._{{$object.GQLType}}_{{$field.GQLName}}(ctx, fields[0])\n\t{{- end }}\n\tdefault:\n\t\tpanic(\"unknown field \" + strconv.Quote(fields[0].Name))\n\t}\n}\n{{- else }}\nfunc (ec *executionContext) _{{$object.GQLType}}(ctx context.Context, sel []query.Selection{{if not $object.Root}}, obj *{{$object.FullName}} {{end}}) graphql.Marshaler {\n\tfields := graphql.CollectFields(ec.Doc, sel, {{$object.GQLType|lcFirst}}Implementors, ec.Variables)\n\t{{if $object.Root}}\n\t\tctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{\n\t\t\tObject: {{$object.GQLType|quote}},\n\t\t})\n\t{{end}}\n\tout := graphql.NewOrderedMap(len(fields))\n\tfor i, field := range fields {\n\t\tout.Keys[i] = field.Alias\n\n\t\tswitch field.Name {\n\t\tcase \"__typename\":\n\t\t\tout.Values[i] = graphql.MarshalString({{$object.GQLType|quote}})\n\t\t{{- range $field := $object.Fields }}\n\t\tcase \"{{$field.GQLName}}\":\n\t\t\tout.Values[i] = ec._{{$object.GQLType}}_{{$field.GQLName}}(ctx, field{{if not $object.Root}}, obj{{end}})\n\t\t{{- end }}\n\t\tdefault:\n\t\t\tpanic(\"unknown field \" + strconv.Quote(field.Name))\n\t\t}\n\t}\n\n\treturn out\n}\n{{- end }}\n", } diff --git a/example/chat/generated.go b/example/chat/generated.go index c0049c2dbb6..20ca498776a 100644 --- a/example/chat/generated.go +++ b/example/chat/generated.go @@ -103,6 +103,7 @@ var chatroomImplementors = []string{"Chatroom"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Chatroom(ctx context.Context, sel []query.Selection, obj *Chatroom) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, chatroomImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -123,15 +124,32 @@ func (ec *executionContext) _Chatroom(ctx context.Context, sel []query.Selection } func (ec *executionContext) _Chatroom_name(ctx context.Context, field graphql.CollectedField, obj *Chatroom) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Chatroom" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name return graphql.MarshalString(res) } func (ec *executionContext) _Chatroom_messages(ctx context.Context, field graphql.CollectedField, obj *Chatroom) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Chatroom" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Messages arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return ec._Message(ctx, field.Selections, &res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return ec._Message(ctx, field.Selections, &res[idx1]) + }()) } return arr1 } @@ -141,6 +159,7 @@ var messageImplementors = []string{"Message"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Message(ctx context.Context, sel []query.Selection, obj *Message) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, messageImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -165,21 +184,45 @@ func (ec *executionContext) _Message(ctx context.Context, sel []query.Selection, } func (ec *executionContext) _Message_id(ctx context.Context, field graphql.CollectedField, obj *Message) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Message" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.ID return graphql.MarshalID(res) } func (ec *executionContext) _Message_text(ctx context.Context, field graphql.CollectedField, obj *Message) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Message" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Text return graphql.MarshalString(res) } func (ec *executionContext) _Message_createdBy(ctx context.Context, field graphql.CollectedField, obj *Message) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Message" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.CreatedBy return graphql.MarshalString(res) } func (ec *executionContext) _Message_createdAt(ctx context.Context, field graphql.CollectedField, obj *Message) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Message" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.CreatedAt return graphql.MarshalTime(res) } @@ -189,6 +232,11 @@ var mutationImplementors = []string{"Mutation"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Mutation(ctx context.Context, sel []query.Selection) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, mutationImplementors, ec.Variables) + + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Mutation", + }) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -213,7 +261,7 @@ func (ec *executionContext) _Mutation_post(ctx context.Context, field graphql.Co var err error arg0, err = graphql.UnmarshalString(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } @@ -223,7 +271,7 @@ func (ec *executionContext) _Mutation_post(ctx context.Context, field graphql.Co var err error arg1, err = graphql.UnmarshalString(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } @@ -233,21 +281,23 @@ func (ec *executionContext) _Mutation_post(ctx context.Context, field graphql.Co var err error arg2, err = graphql.UnmarshalString(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["roomName"] = arg2 - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Mutation", - Args: args, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Mutation_post(rctx, args["text"].(string), args["username"].(string), args["roomName"].(string)) + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Mutation" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Mutation_post(ctx, args["text"].(string), args["username"].(string), args["roomName"].(string)) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -262,6 +312,11 @@ var queryImplementors = []string{"Query"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Query(ctx context.Context, sel []query.Selection) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, queryImplementors, ec.Variables) + + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + }) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -290,29 +345,30 @@ func (ec *executionContext) _Query_room(ctx context.Context, field graphql.Colle var err error arg0, err = graphql.UnmarshalString(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["name"] = arg0 + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + Args: args, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Query", - Args: args, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Query_room(rctx, args["name"].(string)) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Query_room(ctx, args["name"].(string)) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -327,6 +383,12 @@ func (ec *executionContext) _Query_room(ctx context.Context, field graphql.Colle } func (ec *executionContext) _Query___schema(ctx context.Context, field graphql.CollectedField) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Query" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := ec.introspectSchema() if res == nil { return graphql.Null @@ -341,11 +403,17 @@ func (ec *executionContext) _Query___type(ctx context.Context, field graphql.Col var err error arg0, err = graphql.UnmarshalString(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["name"] = arg0 + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Query" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := ec.introspectType(args["name"].(string)) if res == nil { return graphql.Null @@ -358,9 +426,11 @@ var subscriptionImplementors = []string{"Subscription"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Subscription(ctx context.Context, sel []query.Selection) func() graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, subscriptionImplementors, ec.Variables) - + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Subscription", + }) if len(fields) != 1 { - ec.Errorf("must subscribe to exactly one stream") + ec.Errorf(ctx, "must subscribe to exactly one stream") return nil } @@ -379,15 +449,15 @@ func (ec *executionContext) _Subscription_messageAdded(ctx context.Context, fiel var err error arg0, err = graphql.UnmarshalString(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return nil } } args["roomName"] = arg0 - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{Field: field}) - results, err := ec.resolvers.Subscription_messageAdded(rctx, args["roomName"].(string)) + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{Field: field}) + results, err := ec.resolvers.Subscription_messageAdded(ctx, args["roomName"].(string)) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return nil } return func() graphql.Marshaler { @@ -406,6 +476,7 @@ var __DirectiveImplementors = []string{"__Directive"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Directive(ctx context.Context, sel []query.Selection, obj *introspection.Directive) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __DirectiveImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -430,11 +501,23 @@ func (ec *executionContext) ___Directive(ctx context.Context, sel []query.Select } func (ec *executionContext) ___Directive_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___Directive_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -443,19 +526,39 @@ func (ec *executionContext) ___Directive_description(ctx context.Context, field } func (ec *executionContext) ___Directive_locations(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Locations() arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return graphql.MarshalString(res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return graphql.MarshalString(res[idx1]) + }()) } return arr1 } func (ec *executionContext) ___Directive_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Args() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -470,6 +573,7 @@ var __EnumValueImplementors = []string{"__EnumValue"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___EnumValue(ctx context.Context, sel []query.Selection, obj *introspection.EnumValue) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __EnumValueImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -494,11 +598,23 @@ func (ec *executionContext) ___EnumValue(ctx context.Context, sel []query.Select } func (ec *executionContext) ___EnumValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___EnumValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -507,11 +623,23 @@ func (ec *executionContext) ___EnumValue_description(ctx context.Context, field } func (ec *executionContext) ___EnumValue_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.IsDeprecated() return graphql.MarshalBoolean(res) } func (ec *executionContext) ___EnumValue_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.DeprecationReason() if res == nil { return graphql.Null @@ -524,6 +652,7 @@ var __FieldImplementors = []string{"__Field"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Field(ctx context.Context, sel []query.Selection, obj *introspection.Field) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __FieldImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -552,11 +681,23 @@ func (ec *executionContext) ___Field(ctx context.Context, sel []query.Selection, } func (ec *executionContext) ___Field_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___Field_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -565,10 +706,19 @@ func (ec *executionContext) ___Field_description(ctx context.Context, field grap } func (ec *executionContext) ___Field_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Args() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -579,6 +729,12 @@ func (ec *executionContext) ___Field_args(ctx context.Context, field graphql.Col } func (ec *executionContext) ___Field_type(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Type() if res == nil { return graphql.Null @@ -587,11 +743,23 @@ func (ec *executionContext) ___Field_type(ctx context.Context, field graphql.Col } func (ec *executionContext) ___Field_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.IsDeprecated() return graphql.MarshalBoolean(res) } func (ec *executionContext) ___Field_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.DeprecationReason() if res == nil { return graphql.Null @@ -604,6 +772,7 @@ var __InputValueImplementors = []string{"__InputValue"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___InputValue(ctx context.Context, sel []query.Selection, obj *introspection.InputValue) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __InputValueImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -628,11 +797,23 @@ func (ec *executionContext) ___InputValue(ctx context.Context, sel []query.Selec } func (ec *executionContext) ___InputValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___InputValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -641,6 +822,12 @@ func (ec *executionContext) ___InputValue_description(ctx context.Context, field } func (ec *executionContext) ___InputValue_type(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Type() if res == nil { return graphql.Null @@ -649,6 +836,12 @@ func (ec *executionContext) ___InputValue_type(ctx context.Context, field graphq } func (ec *executionContext) ___InputValue_defaultValue(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.DefaultValue() if res == nil { return graphql.Null @@ -661,6 +854,7 @@ var __SchemaImplementors = []string{"__Schema"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Schema(ctx context.Context, sel []query.Selection, obj *introspection.Schema) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __SchemaImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -687,10 +881,19 @@ func (ec *executionContext) ___Schema(ctx context.Context, sel []query.Selection } func (ec *executionContext) ___Schema_types(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Types() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -701,6 +904,12 @@ func (ec *executionContext) ___Schema_types(ctx context.Context, field graphql.C } func (ec *executionContext) ___Schema_queryType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.QueryType() if res == nil { return graphql.Null @@ -709,6 +918,12 @@ func (ec *executionContext) ___Schema_queryType(ctx context.Context, field graph } func (ec *executionContext) ___Schema_mutationType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.MutationType() if res == nil { return graphql.Null @@ -717,6 +932,12 @@ func (ec *executionContext) ___Schema_mutationType(ctx context.Context, field gr } func (ec *executionContext) ___Schema_subscriptionType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.SubscriptionType() if res == nil { return graphql.Null @@ -725,10 +946,19 @@ func (ec *executionContext) ___Schema_subscriptionType(ctx context.Context, fiel } func (ec *executionContext) ___Schema_directives(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Directives() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -743,6 +973,7 @@ var __TypeImplementors = []string{"__Type"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Type(ctx context.Context, sel []query.Selection, obj *introspection.Type) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __TypeImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -777,11 +1008,23 @@ func (ec *executionContext) ___Type(ctx context.Context, sel []query.Selection, } func (ec *executionContext) ___Type_kind(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Kind() return graphql.MarshalString(res) } func (ec *executionContext) ___Type_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() if res == nil { return graphql.Null @@ -790,6 +1033,12 @@ func (ec *executionContext) ___Type_name(ctx context.Context, field graphql.Coll } func (ec *executionContext) ___Type_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -804,15 +1053,24 @@ func (ec *executionContext) ___Type_fields(ctx context.Context, field graphql.Co var err error arg0, err = graphql.UnmarshalBoolean(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["includeDeprecated"] = arg0 + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Fields(args["includeDeprecated"].(bool)) arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -823,10 +1081,19 @@ func (ec *executionContext) ___Type_fields(ctx context.Context, field graphql.Co } func (ec *executionContext) ___Type_interfaces(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Interfaces() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -837,10 +1104,19 @@ func (ec *executionContext) ___Type_interfaces(ctx context.Context, field graphq } func (ec *executionContext) ___Type_possibleTypes(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.PossibleTypes() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -857,15 +1133,24 @@ func (ec *executionContext) ___Type_enumValues(ctx context.Context, field graphq var err error arg0, err = graphql.UnmarshalBoolean(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["includeDeprecated"] = arg0 + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.EnumValues(args["includeDeprecated"].(bool)) arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -876,10 +1161,19 @@ func (ec *executionContext) ___Type_enumValues(ctx context.Context, field graphq } func (ec *executionContext) ___Type_inputFields(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.InputFields() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -890,6 +1184,12 @@ func (ec *executionContext) ___Type_inputFields(ctx context.Context, field graph } func (ec *executionContext) ___Type_ofType(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.OfType() if res == nil { return graphql.Null diff --git a/example/dataloader/generated.go b/example/dataloader/generated.go index d2ca6c1d141..0b0b4d87e71 100644 --- a/example/dataloader/generated.go +++ b/example/dataloader/generated.go @@ -8,7 +8,6 @@ import ( strconv "strconv" graphql "github.com/vektah/gqlgen/graphql" - errors "github.com/vektah/gqlgen/neelance/errors" introspection "github.com/vektah/gqlgen/neelance/introspection" query "github.com/vektah/gqlgen/neelance/query" schema "github.com/vektah/gqlgen/neelance/schema" @@ -52,11 +51,11 @@ func (e *executableSchema) Query(ctx context.Context, op *query.Operation) *grap } func (e *executableSchema) Mutation(ctx context.Context, op *query.Operation) *graphql.Response { - return &graphql.Response{Errors: []*errors.QueryError{{Message: "mutations are not supported"}}} + return graphql.ErrorResponse(ctx, "mutations are not supported") } func (e *executableSchema) Subscription(ctx context.Context, op *query.Operation) func() *graphql.Response { - return graphql.OneShot(&graphql.Response{Errors: []*errors.QueryError{{Message: "subscriptions are not supported"}}}) + return graphql.OneShot(graphql.ErrorResponse(ctx, "subscriptions are not supported")) } type executionContext struct { @@ -70,6 +69,7 @@ var addressImplementors = []string{"Address"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Address(ctx context.Context, sel []query.Selection, obj *Address) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, addressImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -92,16 +92,34 @@ func (ec *executionContext) _Address(ctx context.Context, sel []query.Selection, } func (ec *executionContext) _Address_id(ctx context.Context, field graphql.CollectedField, obj *Address) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Address" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.ID return graphql.MarshalInt(res) } func (ec *executionContext) _Address_street(ctx context.Context, field graphql.CollectedField, obj *Address) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Address" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Street return graphql.MarshalString(res) } func (ec *executionContext) _Address_country(ctx context.Context, field graphql.CollectedField, obj *Address) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Address" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Country return graphql.MarshalString(res) } @@ -111,6 +129,7 @@ var customerImplementors = []string{"Customer"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Customer(ctx context.Context, sel []query.Selection, obj *Customer) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, customerImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -135,34 +154,47 @@ func (ec *executionContext) _Customer(ctx context.Context, sel []query.Selection } func (ec *executionContext) _Customer_id(ctx context.Context, field graphql.CollectedField, obj *Customer) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Customer" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.ID return graphql.MarshalInt(res) } func (ec *executionContext) _Customer_name(ctx context.Context, field graphql.CollectedField, obj *Customer) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Customer" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name return graphql.MarshalString(res) } func (ec *executionContext) _Customer_address(ctx context.Context, field graphql.CollectedField, obj *Customer) graphql.Marshaler { + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Customer", + Args: nil, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Customer", - Args: nil, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Customer_address(rctx, obj) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Customer_address(ctx, obj) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -177,24 +209,25 @@ func (ec *executionContext) _Customer_address(ctx context.Context, field graphql } func (ec *executionContext) _Customer_orders(ctx context.Context, field graphql.CollectedField, obj *Customer) graphql.Marshaler { + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Customer", + Args: nil, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Customer", - Args: nil, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Customer_orders(rctx, obj) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Customer_orders(ctx, obj) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -203,7 +236,12 @@ func (ec *executionContext) _Customer_orders(ctx context.Context, field graphql. res := resTmp.([]Order) arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return ec._Order(ctx, field.Selections, &res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return ec._Order(ctx, field.Selections, &res[idx1]) + }()) } return arr1 }) @@ -214,6 +252,7 @@ var itemImplementors = []string{"Item"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Item(ctx context.Context, sel []query.Selection, obj *Item) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, itemImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -232,6 +271,12 @@ func (ec *executionContext) _Item(ctx context.Context, sel []query.Selection, ob } func (ec *executionContext) _Item_name(ctx context.Context, field graphql.CollectedField, obj *Item) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Item" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name return graphql.MarshalString(res) } @@ -241,6 +286,7 @@ var orderImplementors = []string{"Order"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Order(ctx context.Context, sel []query.Selection, obj *Order) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, orderImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -265,39 +311,58 @@ func (ec *executionContext) _Order(ctx context.Context, sel []query.Selection, o } func (ec *executionContext) _Order_id(ctx context.Context, field graphql.CollectedField, obj *Order) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Order" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.ID return graphql.MarshalInt(res) } func (ec *executionContext) _Order_date(ctx context.Context, field graphql.CollectedField, obj *Order) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Order" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Date return graphql.MarshalTime(res) } func (ec *executionContext) _Order_amount(ctx context.Context, field graphql.CollectedField, obj *Order) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Order" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Amount return graphql.MarshalFloat(res) } func (ec *executionContext) _Order_items(ctx context.Context, field graphql.CollectedField, obj *Order) graphql.Marshaler { + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Order", + Args: nil, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Order", - Args: nil, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Order_items(rctx, obj) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Order_items(ctx, obj) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -306,7 +371,12 @@ func (ec *executionContext) _Order_items(ctx context.Context, field graphql.Coll res := resTmp.([]Item) arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return ec._Item(ctx, field.Selections, &res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return ec._Item(ctx, field.Selections, &res[idx1]) + }()) } return arr1 }) @@ -317,6 +387,11 @@ var queryImplementors = []string{"Query"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Query(ctx context.Context, sel []query.Selection) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, queryImplementors, ec.Variables) + + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + }) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -341,24 +416,25 @@ func (ec *executionContext) _Query(ctx context.Context, sel []query.Selection) g } func (ec *executionContext) _Query_customers(ctx context.Context, field graphql.CollectedField) graphql.Marshaler { + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + Args: nil, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Query", - Args: nil, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Query_customers(rctx) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Query_customers(ctx) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -367,7 +443,12 @@ func (ec *executionContext) _Query_customers(ctx context.Context, field graphql. res := resTmp.([]Customer) arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return ec._Customer(ctx, field.Selections, &res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return ec._Customer(ctx, field.Selections, &res[idx1]) + }()) } return arr1 }) @@ -388,29 +469,30 @@ func (ec *executionContext) _Query_torture(ctx context.Context, field graphql.Co } } if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["customerIds"] = arg0 + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + Args: args, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Query", - Args: args, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Query_torture(rctx, args["customerIds"].([][]int)) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Query_torture(ctx, args["customerIds"].([][]int)) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -420,9 +502,17 @@ func (ec *executionContext) _Query_torture(ctx context.Context, field graphql.Co arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() arr2 := graphql.Array{} for idx2 := range res[idx1] { - arr2 = append(arr2, func() graphql.Marshaler { return ec._Customer(ctx, field.Selections, &res[idx1][idx2]) }()) + arr2 = append(arr2, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx2) + defer rctx.Pop() + return ec._Customer(ctx, field.Selections, &res[idx1][idx2]) + }()) } return arr2 }()) @@ -432,6 +522,12 @@ func (ec *executionContext) _Query_torture(ctx context.Context, field graphql.Co } func (ec *executionContext) _Query___schema(ctx context.Context, field graphql.CollectedField) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Query" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := ec.introspectSchema() if res == nil { return graphql.Null @@ -446,11 +542,17 @@ func (ec *executionContext) _Query___type(ctx context.Context, field graphql.Col var err error arg0, err = graphql.UnmarshalString(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["name"] = arg0 + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Query" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := ec.introspectType(args["name"].(string)) if res == nil { return graphql.Null @@ -463,6 +565,7 @@ var __DirectiveImplementors = []string{"__Directive"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Directive(ctx context.Context, sel []query.Selection, obj *introspection.Directive) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __DirectiveImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -487,11 +590,23 @@ func (ec *executionContext) ___Directive(ctx context.Context, sel []query.Select } func (ec *executionContext) ___Directive_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___Directive_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -500,19 +615,39 @@ func (ec *executionContext) ___Directive_description(ctx context.Context, field } func (ec *executionContext) ___Directive_locations(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Locations() arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return graphql.MarshalString(res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return graphql.MarshalString(res[idx1]) + }()) } return arr1 } func (ec *executionContext) ___Directive_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Args() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -527,6 +662,7 @@ var __EnumValueImplementors = []string{"__EnumValue"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___EnumValue(ctx context.Context, sel []query.Selection, obj *introspection.EnumValue) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __EnumValueImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -551,11 +687,23 @@ func (ec *executionContext) ___EnumValue(ctx context.Context, sel []query.Select } func (ec *executionContext) ___EnumValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___EnumValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -564,11 +712,23 @@ func (ec *executionContext) ___EnumValue_description(ctx context.Context, field } func (ec *executionContext) ___EnumValue_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.IsDeprecated() return graphql.MarshalBoolean(res) } func (ec *executionContext) ___EnumValue_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.DeprecationReason() if res == nil { return graphql.Null @@ -581,6 +741,7 @@ var __FieldImplementors = []string{"__Field"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Field(ctx context.Context, sel []query.Selection, obj *introspection.Field) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __FieldImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -609,11 +770,23 @@ func (ec *executionContext) ___Field(ctx context.Context, sel []query.Selection, } func (ec *executionContext) ___Field_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___Field_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -622,10 +795,19 @@ func (ec *executionContext) ___Field_description(ctx context.Context, field grap } func (ec *executionContext) ___Field_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Args() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -636,6 +818,12 @@ func (ec *executionContext) ___Field_args(ctx context.Context, field graphql.Col } func (ec *executionContext) ___Field_type(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Type() if res == nil { return graphql.Null @@ -644,11 +832,23 @@ func (ec *executionContext) ___Field_type(ctx context.Context, field graphql.Col } func (ec *executionContext) ___Field_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.IsDeprecated() return graphql.MarshalBoolean(res) } func (ec *executionContext) ___Field_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.DeprecationReason() if res == nil { return graphql.Null @@ -661,6 +861,7 @@ var __InputValueImplementors = []string{"__InputValue"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___InputValue(ctx context.Context, sel []query.Selection, obj *introspection.InputValue) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __InputValueImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -685,11 +886,23 @@ func (ec *executionContext) ___InputValue(ctx context.Context, sel []query.Selec } func (ec *executionContext) ___InputValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___InputValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -698,6 +911,12 @@ func (ec *executionContext) ___InputValue_description(ctx context.Context, field } func (ec *executionContext) ___InputValue_type(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Type() if res == nil { return graphql.Null @@ -706,6 +925,12 @@ func (ec *executionContext) ___InputValue_type(ctx context.Context, field graphq } func (ec *executionContext) ___InputValue_defaultValue(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.DefaultValue() if res == nil { return graphql.Null @@ -718,6 +943,7 @@ var __SchemaImplementors = []string{"__Schema"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Schema(ctx context.Context, sel []query.Selection, obj *introspection.Schema) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __SchemaImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -744,10 +970,19 @@ func (ec *executionContext) ___Schema(ctx context.Context, sel []query.Selection } func (ec *executionContext) ___Schema_types(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Types() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -758,6 +993,12 @@ func (ec *executionContext) ___Schema_types(ctx context.Context, field graphql.C } func (ec *executionContext) ___Schema_queryType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.QueryType() if res == nil { return graphql.Null @@ -766,6 +1007,12 @@ func (ec *executionContext) ___Schema_queryType(ctx context.Context, field graph } func (ec *executionContext) ___Schema_mutationType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.MutationType() if res == nil { return graphql.Null @@ -774,6 +1021,12 @@ func (ec *executionContext) ___Schema_mutationType(ctx context.Context, field gr } func (ec *executionContext) ___Schema_subscriptionType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.SubscriptionType() if res == nil { return graphql.Null @@ -782,10 +1035,19 @@ func (ec *executionContext) ___Schema_subscriptionType(ctx context.Context, fiel } func (ec *executionContext) ___Schema_directives(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Directives() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -800,6 +1062,7 @@ var __TypeImplementors = []string{"__Type"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Type(ctx context.Context, sel []query.Selection, obj *introspection.Type) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __TypeImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -834,11 +1097,23 @@ func (ec *executionContext) ___Type(ctx context.Context, sel []query.Selection, } func (ec *executionContext) ___Type_kind(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Kind() return graphql.MarshalString(res) } func (ec *executionContext) ___Type_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() if res == nil { return graphql.Null @@ -847,6 +1122,12 @@ func (ec *executionContext) ___Type_name(ctx context.Context, field graphql.Coll } func (ec *executionContext) ___Type_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -861,15 +1142,24 @@ func (ec *executionContext) ___Type_fields(ctx context.Context, field graphql.Co var err error arg0, err = graphql.UnmarshalBoolean(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["includeDeprecated"] = arg0 + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Fields(args["includeDeprecated"].(bool)) arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -880,10 +1170,19 @@ func (ec *executionContext) ___Type_fields(ctx context.Context, field graphql.Co } func (ec *executionContext) ___Type_interfaces(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Interfaces() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -894,10 +1193,19 @@ func (ec *executionContext) ___Type_interfaces(ctx context.Context, field graphq } func (ec *executionContext) ___Type_possibleTypes(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.PossibleTypes() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -914,15 +1222,24 @@ func (ec *executionContext) ___Type_enumValues(ctx context.Context, field graphq var err error arg0, err = graphql.UnmarshalBoolean(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["includeDeprecated"] = arg0 + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.EnumValues(args["includeDeprecated"].(bool)) arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -933,10 +1250,19 @@ func (ec *executionContext) ___Type_enumValues(ctx context.Context, field graphq } func (ec *executionContext) ___Type_inputFields(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.InputFields() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -947,6 +1273,12 @@ func (ec *executionContext) ___Type_inputFields(ctx context.Context, field graph } func (ec *executionContext) ___Type_ofType(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.OfType() if res == nil { return graphql.Null diff --git a/example/scalars/generated.go b/example/scalars/generated.go index ec97af57f4e..c40a1324226 100644 --- a/example/scalars/generated.go +++ b/example/scalars/generated.go @@ -10,7 +10,6 @@ import ( time "time" graphql "github.com/vektah/gqlgen/graphql" - errors "github.com/vektah/gqlgen/neelance/errors" introspection "github.com/vektah/gqlgen/neelance/introspection" query "github.com/vektah/gqlgen/neelance/query" schema "github.com/vektah/gqlgen/neelance/schema" @@ -53,11 +52,11 @@ func (e *executableSchema) Query(ctx context.Context, op *query.Operation) *grap } func (e *executableSchema) Mutation(ctx context.Context, op *query.Operation) *graphql.Response { - return &graphql.Response{Errors: []*errors.QueryError{{Message: "mutations are not supported"}}} + return graphql.ErrorResponse(ctx, "mutations are not supported") } func (e *executableSchema) Subscription(ctx context.Context, op *query.Operation) func() *graphql.Response { - return graphql.OneShot(&graphql.Response{Errors: []*errors.QueryError{{Message: "subscriptions are not supported"}}}) + return graphql.OneShot(graphql.ErrorResponse(ctx, "subscriptions are not supported")) } type executionContext struct { @@ -71,6 +70,7 @@ var addressImplementors = []string{"Address"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Address(ctx context.Context, sel []query.Selection, obj *Address) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, addressImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -91,11 +91,23 @@ func (ec *executionContext) _Address(ctx context.Context, sel []query.Selection, } func (ec *executionContext) _Address_id(ctx context.Context, field graphql.CollectedField, obj *Address) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Address" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.ID return MarshalID(res) } func (ec *executionContext) _Address_location(ctx context.Context, field graphql.CollectedField, obj *Address) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Address" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Location if res == nil { return graphql.Null @@ -108,6 +120,11 @@ var queryImplementors = []string{"Query"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Query(ctx context.Context, sel []query.Selection) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, queryImplementors, ec.Variables) + + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + }) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -138,29 +155,30 @@ func (ec *executionContext) _Query_user(ctx context.Context, field graphql.Colle var err error arg0, err = UnmarshalID(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["id"] = arg0 + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + Args: args, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Query", - Args: args, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Query_user(rctx, args["id"].(external.ObjectID)) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Query_user(ctx, args["id"].(external.ObjectID)) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -181,7 +199,7 @@ func (ec *executionContext) _Query_search(ctx context.Context, field graphql.Col var err error arg0, err = UnmarshalSearchArgs(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } else { @@ -189,30 +207,31 @@ func (ec *executionContext) _Query_search(ctx context.Context, field graphql.Col var err error arg0, err = UnmarshalSearchArgs(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["input"] = arg0 + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + Args: args, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Query", - Args: args, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Query_search(rctx, args["input"].(SearchArgs)) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Query_search(ctx, args["input"].(SearchArgs)) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -221,13 +240,24 @@ func (ec *executionContext) _Query_search(ctx context.Context, field graphql.Col res := resTmp.([]User) arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return ec._User(ctx, field.Selections, &res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return ec._User(ctx, field.Selections, &res[idx1]) + }()) } return arr1 }) } func (ec *executionContext) _Query___schema(ctx context.Context, field graphql.CollectedField) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Query" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := ec.introspectSchema() if res == nil { return graphql.Null @@ -242,11 +272,17 @@ func (ec *executionContext) _Query___type(ctx context.Context, field graphql.Col var err error arg0, err = graphql.UnmarshalString(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["name"] = arg0 + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Query" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := ec.introspectType(args["name"].(string)) if res == nil { return graphql.Null @@ -259,6 +295,7 @@ var userImplementors = []string{"User"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _User(ctx context.Context, sel []query.Selection, obj *User) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, userImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -291,44 +328,69 @@ func (ec *executionContext) _User(ctx context.Context, sel []query.Selection, ob } func (ec *executionContext) _User_id(ctx context.Context, field graphql.CollectedField, obj *User) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "User" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.ID return MarshalID(res) } func (ec *executionContext) _User_name(ctx context.Context, field graphql.CollectedField, obj *User) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "User" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name return graphql.MarshalString(res) } func (ec *executionContext) _User_created(ctx context.Context, field graphql.CollectedField, obj *User) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "User" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Created return MarshalTimestamp(res) } func (ec *executionContext) _User_isBanned(ctx context.Context, field graphql.CollectedField, obj *User) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "User" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.IsBanned return graphql.MarshalBoolean(bool(res)) } func (ec *executionContext) _User_primitiveResolver(ctx context.Context, field graphql.CollectedField, obj *User) graphql.Marshaler { + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "User", + Args: nil, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "User", - Args: nil, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.User_primitiveResolver(rctx, obj) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.User_primitiveResolver(ctx, obj) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -340,24 +402,25 @@ func (ec *executionContext) _User_primitiveResolver(ctx context.Context, field g } func (ec *executionContext) _User_customResolver(ctx context.Context, field graphql.CollectedField, obj *User) graphql.Marshaler { + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "User", + Args: nil, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "User", - Args: nil, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.User_customResolver(rctx, obj) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.User_customResolver(ctx, obj) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -369,11 +432,23 @@ func (ec *executionContext) _User_customResolver(ctx context.Context, field grap } func (ec *executionContext) _User_address(ctx context.Context, field graphql.CollectedField, obj *User) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "User" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Address return ec._Address(ctx, field.Selections, &res) } func (ec *executionContext) _User_tier(ctx context.Context, field graphql.CollectedField, obj *User) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "User" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Tier return res } @@ -383,6 +458,7 @@ var __DirectiveImplementors = []string{"__Directive"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Directive(ctx context.Context, sel []query.Selection, obj *introspection.Directive) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __DirectiveImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -407,11 +483,23 @@ func (ec *executionContext) ___Directive(ctx context.Context, sel []query.Select } func (ec *executionContext) ___Directive_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___Directive_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -420,19 +508,39 @@ func (ec *executionContext) ___Directive_description(ctx context.Context, field } func (ec *executionContext) ___Directive_locations(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Locations() arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return graphql.MarshalString(res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return graphql.MarshalString(res[idx1]) + }()) } return arr1 } func (ec *executionContext) ___Directive_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Args() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -447,6 +555,7 @@ var __EnumValueImplementors = []string{"__EnumValue"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___EnumValue(ctx context.Context, sel []query.Selection, obj *introspection.EnumValue) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __EnumValueImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -471,11 +580,23 @@ func (ec *executionContext) ___EnumValue(ctx context.Context, sel []query.Select } func (ec *executionContext) ___EnumValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___EnumValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -484,11 +605,23 @@ func (ec *executionContext) ___EnumValue_description(ctx context.Context, field } func (ec *executionContext) ___EnumValue_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.IsDeprecated() return graphql.MarshalBoolean(res) } func (ec *executionContext) ___EnumValue_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.DeprecationReason() if res == nil { return graphql.Null @@ -501,6 +634,7 @@ var __FieldImplementors = []string{"__Field"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Field(ctx context.Context, sel []query.Selection, obj *introspection.Field) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __FieldImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -529,11 +663,23 @@ func (ec *executionContext) ___Field(ctx context.Context, sel []query.Selection, } func (ec *executionContext) ___Field_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___Field_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -542,10 +688,19 @@ func (ec *executionContext) ___Field_description(ctx context.Context, field grap } func (ec *executionContext) ___Field_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Args() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -556,6 +711,12 @@ func (ec *executionContext) ___Field_args(ctx context.Context, field graphql.Col } func (ec *executionContext) ___Field_type(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Type() if res == nil { return graphql.Null @@ -564,11 +725,23 @@ func (ec *executionContext) ___Field_type(ctx context.Context, field graphql.Col } func (ec *executionContext) ___Field_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.IsDeprecated() return graphql.MarshalBoolean(res) } func (ec *executionContext) ___Field_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.DeprecationReason() if res == nil { return graphql.Null @@ -581,6 +754,7 @@ var __InputValueImplementors = []string{"__InputValue"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___InputValue(ctx context.Context, sel []query.Selection, obj *introspection.InputValue) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __InputValueImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -605,11 +779,23 @@ func (ec *executionContext) ___InputValue(ctx context.Context, sel []query.Selec } func (ec *executionContext) ___InputValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___InputValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -618,6 +804,12 @@ func (ec *executionContext) ___InputValue_description(ctx context.Context, field } func (ec *executionContext) ___InputValue_type(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Type() if res == nil { return graphql.Null @@ -626,6 +818,12 @@ func (ec *executionContext) ___InputValue_type(ctx context.Context, field graphq } func (ec *executionContext) ___InputValue_defaultValue(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.DefaultValue() if res == nil { return graphql.Null @@ -638,6 +836,7 @@ var __SchemaImplementors = []string{"__Schema"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Schema(ctx context.Context, sel []query.Selection, obj *introspection.Schema) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __SchemaImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -664,10 +863,19 @@ func (ec *executionContext) ___Schema(ctx context.Context, sel []query.Selection } func (ec *executionContext) ___Schema_types(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Types() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -678,6 +886,12 @@ func (ec *executionContext) ___Schema_types(ctx context.Context, field graphql.C } func (ec *executionContext) ___Schema_queryType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.QueryType() if res == nil { return graphql.Null @@ -686,6 +900,12 @@ func (ec *executionContext) ___Schema_queryType(ctx context.Context, field graph } func (ec *executionContext) ___Schema_mutationType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.MutationType() if res == nil { return graphql.Null @@ -694,6 +914,12 @@ func (ec *executionContext) ___Schema_mutationType(ctx context.Context, field gr } func (ec *executionContext) ___Schema_subscriptionType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.SubscriptionType() if res == nil { return graphql.Null @@ -702,10 +928,19 @@ func (ec *executionContext) ___Schema_subscriptionType(ctx context.Context, fiel } func (ec *executionContext) ___Schema_directives(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Directives() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -720,6 +955,7 @@ var __TypeImplementors = []string{"__Type"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Type(ctx context.Context, sel []query.Selection, obj *introspection.Type) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __TypeImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -754,11 +990,23 @@ func (ec *executionContext) ___Type(ctx context.Context, sel []query.Selection, } func (ec *executionContext) ___Type_kind(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Kind() return graphql.MarshalString(res) } func (ec *executionContext) ___Type_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() if res == nil { return graphql.Null @@ -767,6 +1015,12 @@ func (ec *executionContext) ___Type_name(ctx context.Context, field graphql.Coll } func (ec *executionContext) ___Type_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -781,15 +1035,24 @@ func (ec *executionContext) ___Type_fields(ctx context.Context, field graphql.Co var err error arg0, err = graphql.UnmarshalBoolean(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["includeDeprecated"] = arg0 + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Fields(args["includeDeprecated"].(bool)) arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -800,10 +1063,19 @@ func (ec *executionContext) ___Type_fields(ctx context.Context, field graphql.Co } func (ec *executionContext) ___Type_interfaces(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Interfaces() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -814,10 +1086,19 @@ func (ec *executionContext) ___Type_interfaces(ctx context.Context, field graphq } func (ec *executionContext) ___Type_possibleTypes(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.PossibleTypes() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -834,15 +1115,24 @@ func (ec *executionContext) ___Type_enumValues(ctx context.Context, field graphq var err error arg0, err = graphql.UnmarshalBoolean(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["includeDeprecated"] = arg0 + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.EnumValues(args["includeDeprecated"].(bool)) arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -853,10 +1143,19 @@ func (ec *executionContext) ___Type_enumValues(ctx context.Context, field graphq } func (ec *executionContext) ___Type_inputFields(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.InputFields() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -867,6 +1166,12 @@ func (ec *executionContext) ___Type_inputFields(ctx context.Context, field graph } func (ec *executionContext) ___Type_ofType(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.OfType() if res == nil { return graphql.Null diff --git a/example/selection/generated.go b/example/selection/generated.go index 469a5c04d89..c1f7ccc0cbe 100644 --- a/example/selection/generated.go +++ b/example/selection/generated.go @@ -9,7 +9,6 @@ import ( strconv "strconv" graphql "github.com/vektah/gqlgen/graphql" - errors "github.com/vektah/gqlgen/neelance/errors" introspection "github.com/vektah/gqlgen/neelance/introspection" query "github.com/vektah/gqlgen/neelance/query" schema "github.com/vektah/gqlgen/neelance/schema" @@ -48,11 +47,11 @@ func (e *executableSchema) Query(ctx context.Context, op *query.Operation) *grap } func (e *executableSchema) Mutation(ctx context.Context, op *query.Operation) *graphql.Response { - return &graphql.Response{Errors: []*errors.QueryError{{Message: "mutations are not supported"}}} + return graphql.ErrorResponse(ctx, "mutations are not supported") } func (e *executableSchema) Subscription(ctx context.Context, op *query.Operation) func() *graphql.Response { - return graphql.OneShot(&graphql.Response{Errors: []*errors.QueryError{{Message: "subscriptions are not supported"}}}) + return graphql.OneShot(graphql.ErrorResponse(ctx, "subscriptions are not supported")) } type executionContext struct { @@ -66,6 +65,7 @@ var likeImplementors = []string{"Like", "Event"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Like(ctx context.Context, sel []query.Selection, obj *Like) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, likeImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -90,29 +90,63 @@ func (ec *executionContext) _Like(ctx context.Context, sel []query.Selection, ob } func (ec *executionContext) _Like_reaction(ctx context.Context, field graphql.CollectedField, obj *Like) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Like" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Reaction return graphql.MarshalString(res) } func (ec *executionContext) _Like_sent(ctx context.Context, field graphql.CollectedField, obj *Like) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Like" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Sent return graphql.MarshalTime(res) } func (ec *executionContext) _Like_selection(ctx context.Context, field graphql.CollectedField, obj *Like) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Like" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Selection arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return graphql.MarshalString(res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return graphql.MarshalString(res[idx1]) + }()) } return arr1 } func (ec *executionContext) _Like_collected(ctx context.Context, field graphql.CollectedField, obj *Like) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Like" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Collected arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return graphql.MarshalString(res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return graphql.MarshalString(res[idx1]) + }()) } return arr1 } @@ -122,6 +156,7 @@ var postImplementors = []string{"Post", "Event"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Post(ctx context.Context, sel []query.Selection, obj *Post) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, postImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -146,29 +181,63 @@ func (ec *executionContext) _Post(ctx context.Context, sel []query.Selection, ob } func (ec *executionContext) _Post_message(ctx context.Context, field graphql.CollectedField, obj *Post) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Post" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Message return graphql.MarshalString(res) } func (ec *executionContext) _Post_sent(ctx context.Context, field graphql.CollectedField, obj *Post) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Post" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Sent return graphql.MarshalTime(res) } func (ec *executionContext) _Post_selection(ctx context.Context, field graphql.CollectedField, obj *Post) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Post" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Selection arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return graphql.MarshalString(res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return graphql.MarshalString(res[idx1]) + }()) } return arr1 } func (ec *executionContext) _Post_collected(ctx context.Context, field graphql.CollectedField, obj *Post) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Post" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Collected arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return graphql.MarshalString(res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return graphql.MarshalString(res[idx1]) + }()) } return arr1 } @@ -178,6 +247,11 @@ var queryImplementors = []string{"Query"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Query(ctx context.Context, sel []query.Selection) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, queryImplementors, ec.Variables) + + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + }) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -200,24 +274,25 @@ func (ec *executionContext) _Query(ctx context.Context, sel []query.Selection) g } func (ec *executionContext) _Query_events(ctx context.Context, field graphql.CollectedField) graphql.Marshaler { + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + Args: nil, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Query", - Args: nil, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Query_events(rctx) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Query_events(ctx) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -226,13 +301,24 @@ func (ec *executionContext) _Query_events(ctx context.Context, field graphql.Col res := resTmp.([]Event) arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return ec._Event(ctx, field.Selections, &res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return ec._Event(ctx, field.Selections, &res[idx1]) + }()) } return arr1 }) } func (ec *executionContext) _Query___schema(ctx context.Context, field graphql.CollectedField) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Query" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := ec.introspectSchema() if res == nil { return graphql.Null @@ -247,11 +333,17 @@ func (ec *executionContext) _Query___type(ctx context.Context, field graphql.Col var err error arg0, err = graphql.UnmarshalString(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["name"] = arg0 + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Query" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := ec.introspectType(args["name"].(string)) if res == nil { return graphql.Null @@ -264,6 +356,7 @@ var __DirectiveImplementors = []string{"__Directive"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Directive(ctx context.Context, sel []query.Selection, obj *introspection.Directive) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __DirectiveImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -288,11 +381,23 @@ func (ec *executionContext) ___Directive(ctx context.Context, sel []query.Select } func (ec *executionContext) ___Directive_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___Directive_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -301,19 +406,39 @@ func (ec *executionContext) ___Directive_description(ctx context.Context, field } func (ec *executionContext) ___Directive_locations(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Locations() arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return graphql.MarshalString(res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return graphql.MarshalString(res[idx1]) + }()) } return arr1 } func (ec *executionContext) ___Directive_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Args() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -328,6 +453,7 @@ var __EnumValueImplementors = []string{"__EnumValue"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___EnumValue(ctx context.Context, sel []query.Selection, obj *introspection.EnumValue) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __EnumValueImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -352,11 +478,23 @@ func (ec *executionContext) ___EnumValue(ctx context.Context, sel []query.Select } func (ec *executionContext) ___EnumValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___EnumValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -365,11 +503,23 @@ func (ec *executionContext) ___EnumValue_description(ctx context.Context, field } func (ec *executionContext) ___EnumValue_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.IsDeprecated() return graphql.MarshalBoolean(res) } func (ec *executionContext) ___EnumValue_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.DeprecationReason() if res == nil { return graphql.Null @@ -382,6 +532,7 @@ var __FieldImplementors = []string{"__Field"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Field(ctx context.Context, sel []query.Selection, obj *introspection.Field) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __FieldImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -410,11 +561,23 @@ func (ec *executionContext) ___Field(ctx context.Context, sel []query.Selection, } func (ec *executionContext) ___Field_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___Field_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -423,10 +586,19 @@ func (ec *executionContext) ___Field_description(ctx context.Context, field grap } func (ec *executionContext) ___Field_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Args() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -437,6 +609,12 @@ func (ec *executionContext) ___Field_args(ctx context.Context, field graphql.Col } func (ec *executionContext) ___Field_type(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Type() if res == nil { return graphql.Null @@ -445,11 +623,23 @@ func (ec *executionContext) ___Field_type(ctx context.Context, field graphql.Col } func (ec *executionContext) ___Field_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.IsDeprecated() return graphql.MarshalBoolean(res) } func (ec *executionContext) ___Field_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.DeprecationReason() if res == nil { return graphql.Null @@ -462,6 +652,7 @@ var __InputValueImplementors = []string{"__InputValue"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___InputValue(ctx context.Context, sel []query.Selection, obj *introspection.InputValue) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __InputValueImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -486,11 +677,23 @@ func (ec *executionContext) ___InputValue(ctx context.Context, sel []query.Selec } func (ec *executionContext) ___InputValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___InputValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -499,6 +702,12 @@ func (ec *executionContext) ___InputValue_description(ctx context.Context, field } func (ec *executionContext) ___InputValue_type(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Type() if res == nil { return graphql.Null @@ -507,6 +716,12 @@ func (ec *executionContext) ___InputValue_type(ctx context.Context, field graphq } func (ec *executionContext) ___InputValue_defaultValue(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.DefaultValue() if res == nil { return graphql.Null @@ -519,6 +734,7 @@ var __SchemaImplementors = []string{"__Schema"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Schema(ctx context.Context, sel []query.Selection, obj *introspection.Schema) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __SchemaImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -545,10 +761,19 @@ func (ec *executionContext) ___Schema(ctx context.Context, sel []query.Selection } func (ec *executionContext) ___Schema_types(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Types() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -559,6 +784,12 @@ func (ec *executionContext) ___Schema_types(ctx context.Context, field graphql.C } func (ec *executionContext) ___Schema_queryType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.QueryType() if res == nil { return graphql.Null @@ -567,6 +798,12 @@ func (ec *executionContext) ___Schema_queryType(ctx context.Context, field graph } func (ec *executionContext) ___Schema_mutationType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.MutationType() if res == nil { return graphql.Null @@ -575,6 +812,12 @@ func (ec *executionContext) ___Schema_mutationType(ctx context.Context, field gr } func (ec *executionContext) ___Schema_subscriptionType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.SubscriptionType() if res == nil { return graphql.Null @@ -583,10 +826,19 @@ func (ec *executionContext) ___Schema_subscriptionType(ctx context.Context, fiel } func (ec *executionContext) ___Schema_directives(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Directives() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -601,6 +853,7 @@ var __TypeImplementors = []string{"__Type"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Type(ctx context.Context, sel []query.Selection, obj *introspection.Type) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __TypeImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -635,11 +888,23 @@ func (ec *executionContext) ___Type(ctx context.Context, sel []query.Selection, } func (ec *executionContext) ___Type_kind(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Kind() return graphql.MarshalString(res) } func (ec *executionContext) ___Type_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() if res == nil { return graphql.Null @@ -648,6 +913,12 @@ func (ec *executionContext) ___Type_name(ctx context.Context, field graphql.Coll } func (ec *executionContext) ___Type_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -662,15 +933,24 @@ func (ec *executionContext) ___Type_fields(ctx context.Context, field graphql.Co var err error arg0, err = graphql.UnmarshalBoolean(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["includeDeprecated"] = arg0 + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Fields(args["includeDeprecated"].(bool)) arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -681,10 +961,19 @@ func (ec *executionContext) ___Type_fields(ctx context.Context, field graphql.Co } func (ec *executionContext) ___Type_interfaces(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Interfaces() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -695,10 +984,19 @@ func (ec *executionContext) ___Type_interfaces(ctx context.Context, field graphq } func (ec *executionContext) ___Type_possibleTypes(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.PossibleTypes() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -715,15 +1013,24 @@ func (ec *executionContext) ___Type_enumValues(ctx context.Context, field graphq var err error arg0, err = graphql.UnmarshalBoolean(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["includeDeprecated"] = arg0 + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.EnumValues(args["includeDeprecated"].(bool)) arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -734,10 +1041,19 @@ func (ec *executionContext) ___Type_enumValues(ctx context.Context, field graphq } func (ec *executionContext) ___Type_inputFields(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.InputFields() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -748,6 +1064,12 @@ func (ec *executionContext) ___Type_inputFields(ctx context.Context, field graph } func (ec *executionContext) ___Type_ofType(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.OfType() if res == nil { return graphql.Null diff --git a/example/starwars/generated.go b/example/starwars/generated.go index 2e6f48449ca..000b94b48ef 100644 --- a/example/starwars/generated.go +++ b/example/starwars/generated.go @@ -10,7 +10,6 @@ import ( time "time" graphql "github.com/vektah/gqlgen/graphql" - errors "github.com/vektah/gqlgen/neelance/errors" introspection "github.com/vektah/gqlgen/neelance/introspection" query "github.com/vektah/gqlgen/neelance/query" schema "github.com/vektah/gqlgen/neelance/schema" @@ -83,7 +82,7 @@ func (e *executableSchema) Mutation(ctx context.Context, op *query.Operation) *g } func (e *executableSchema) Subscription(ctx context.Context, op *query.Operation) func() *graphql.Response { - return graphql.OneShot(&graphql.Response{Errors: []*errors.QueryError{{Message: "subscriptions are not supported"}}}) + return graphql.OneShot(graphql.ErrorResponse(ctx, "subscriptions are not supported")) } type executionContext struct { @@ -97,6 +96,7 @@ var droidImplementors = []string{"Droid", "Character"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Droid(ctx context.Context, sel []query.Selection, obj *Droid) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, droidImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -125,34 +125,47 @@ func (ec *executionContext) _Droid(ctx context.Context, sel []query.Selection, o } func (ec *executionContext) _Droid_id(ctx context.Context, field graphql.CollectedField, obj *Droid) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Droid" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.ID return graphql.MarshalID(res) } func (ec *executionContext) _Droid_name(ctx context.Context, field graphql.CollectedField, obj *Droid) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Droid" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name return graphql.MarshalString(res) } func (ec *executionContext) _Droid_friends(ctx context.Context, field graphql.CollectedField, obj *Droid) graphql.Marshaler { + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Droid", + Args: nil, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Droid", - Args: nil, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Droid_friends(rctx, obj) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Droid_friends(ctx, obj) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -161,7 +174,12 @@ func (ec *executionContext) _Droid_friends(ctx context.Context, field graphql.Co res := resTmp.([]Character) arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return ec._Character(ctx, field.Selections, &res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return ec._Character(ctx, field.Selections, &res[idx1]) + }()) } return arr1 }) @@ -179,7 +197,7 @@ func (ec *executionContext) _Droid_friendsConnection(ctx context.Context, field } if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } @@ -194,29 +212,30 @@ func (ec *executionContext) _Droid_friendsConnection(ctx context.Context, field } if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["after"] = arg1 + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Droid", + Args: args, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Droid", - Args: args, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Droid_friendsConnection(rctx, obj, args["first"].(*int), args["after"].(*string)) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Droid_friendsConnection(ctx, obj, args["first"].(*int), args["after"].(*string)) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -228,15 +247,32 @@ func (ec *executionContext) _Droid_friendsConnection(ctx context.Context, field } func (ec *executionContext) _Droid_appearsIn(ctx context.Context, field graphql.CollectedField, obj *Droid) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Droid" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.AppearsIn arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return res[idx1] }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return res[idx1] + }()) } return arr1 } func (ec *executionContext) _Droid_primaryFunction(ctx context.Context, field graphql.CollectedField, obj *Droid) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Droid" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.PrimaryFunction return graphql.MarshalString(res) } @@ -246,6 +282,7 @@ var friendsConnectionImplementors = []string{"FriendsConnection"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _FriendsConnection(ctx context.Context, sel []query.Selection, obj *FriendsConnection) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, friendsConnectionImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -270,29 +307,36 @@ func (ec *executionContext) _FriendsConnection(ctx context.Context, sel []query. } func (ec *executionContext) _FriendsConnection_totalCount(ctx context.Context, field graphql.CollectedField, obj *FriendsConnection) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "FriendsConnection" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.TotalCount() return graphql.MarshalInt(res) } func (ec *executionContext) _FriendsConnection_edges(ctx context.Context, field graphql.CollectedField, obj *FriendsConnection) graphql.Marshaler { + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "FriendsConnection", + Args: nil, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "FriendsConnection", - Args: nil, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.FriendsConnection_edges(rctx, obj) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.FriendsConnection_edges(ctx, obj) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -301,31 +345,37 @@ func (ec *executionContext) _FriendsConnection_edges(ctx context.Context, field res := resTmp.([]FriendsEdge) arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return ec._FriendsEdge(ctx, field.Selections, &res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return ec._FriendsEdge(ctx, field.Selections, &res[idx1]) + }()) } return arr1 }) } func (ec *executionContext) _FriendsConnection_friends(ctx context.Context, field graphql.CollectedField, obj *FriendsConnection) graphql.Marshaler { + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "FriendsConnection", + Args: nil, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "FriendsConnection", - Args: nil, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.FriendsConnection_friends(rctx, obj) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.FriendsConnection_friends(ctx, obj) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -334,13 +384,24 @@ func (ec *executionContext) _FriendsConnection_friends(ctx context.Context, fiel res := resTmp.([]Character) arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return ec._Character(ctx, field.Selections, &res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return ec._Character(ctx, field.Selections, &res[idx1]) + }()) } return arr1 }) } func (ec *executionContext) _FriendsConnection_pageInfo(ctx context.Context, field graphql.CollectedField, obj *FriendsConnection) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "FriendsConnection" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.PageInfo() return ec._PageInfo(ctx, field.Selections, &res) } @@ -350,6 +411,7 @@ var friendsEdgeImplementors = []string{"FriendsEdge"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _FriendsEdge(ctx context.Context, sel []query.Selection, obj *FriendsEdge) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, friendsEdgeImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -370,11 +432,23 @@ func (ec *executionContext) _FriendsEdge(ctx context.Context, sel []query.Select } func (ec *executionContext) _FriendsEdge_cursor(ctx context.Context, field graphql.CollectedField, obj *FriendsEdge) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "FriendsEdge" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Cursor return graphql.MarshalID(res) } func (ec *executionContext) _FriendsEdge_node(ctx context.Context, field graphql.CollectedField, obj *FriendsEdge) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "FriendsEdge" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Node return ec._Character(ctx, field.Selections, &res) } @@ -384,6 +458,7 @@ var humanImplementors = []string{"Human", "Character"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Human(ctx context.Context, sel []query.Selection, obj *Human) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, humanImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -416,11 +491,23 @@ func (ec *executionContext) _Human(ctx context.Context, sel []query.Selection, o } func (ec *executionContext) _Human_id(ctx context.Context, field graphql.CollectedField, obj *Human) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Human" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.ID return graphql.MarshalID(res) } func (ec *executionContext) _Human_name(ctx context.Context, field graphql.CollectedField, obj *Human) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Human" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name return graphql.MarshalString(res) } @@ -432,7 +519,7 @@ func (ec *executionContext) _Human_height(ctx context.Context, field graphql.Col var err error err = (&arg0).UnmarshalGQL(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } else { @@ -440,40 +527,53 @@ func (ec *executionContext) _Human_height(ctx context.Context, field graphql.Col var err error err = (&arg0).UnmarshalGQL(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["unit"] = arg0 + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Human" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Height(args["unit"].(LengthUnit)) return graphql.MarshalFloat(res) } func (ec *executionContext) _Human_mass(ctx context.Context, field graphql.CollectedField, obj *Human) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Human" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Mass return graphql.MarshalFloat(res) } func (ec *executionContext) _Human_friends(ctx context.Context, field graphql.CollectedField, obj *Human) graphql.Marshaler { + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Human", + Args: nil, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Human", - Args: nil, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Human_friends(rctx, obj) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Human_friends(ctx, obj) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -482,7 +582,12 @@ func (ec *executionContext) _Human_friends(ctx context.Context, field graphql.Co res := resTmp.([]Character) arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return ec._Character(ctx, field.Selections, &res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return ec._Character(ctx, field.Selections, &res[idx1]) + }()) } return arr1 }) @@ -500,7 +605,7 @@ func (ec *executionContext) _Human_friendsConnection(ctx context.Context, field } if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } @@ -515,29 +620,30 @@ func (ec *executionContext) _Human_friendsConnection(ctx context.Context, field } if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["after"] = arg1 + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Human", + Args: args, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Human", - Args: args, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Human_friendsConnection(rctx, obj, args["first"].(*int), args["after"].(*string)) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Human_friendsConnection(ctx, obj, args["first"].(*int), args["after"].(*string)) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -549,33 +655,45 @@ func (ec *executionContext) _Human_friendsConnection(ctx context.Context, field } func (ec *executionContext) _Human_appearsIn(ctx context.Context, field graphql.CollectedField, obj *Human) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Human" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.AppearsIn arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return res[idx1] }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return res[idx1] + }()) } return arr1 } func (ec *executionContext) _Human_starships(ctx context.Context, field graphql.CollectedField, obj *Human) graphql.Marshaler { + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Human", + Args: nil, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Human", - Args: nil, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Human_starships(rctx, obj) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Human_starships(ctx, obj) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -584,7 +702,12 @@ func (ec *executionContext) _Human_starships(ctx context.Context, field graphql. res := resTmp.([]Starship) arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return ec._Starship(ctx, field.Selections, &res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return ec._Starship(ctx, field.Selections, &res[idx1]) + }()) } return arr1 }) @@ -595,6 +718,11 @@ var mutationImplementors = []string{"Mutation"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Mutation(ctx context.Context, sel []query.Selection) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, mutationImplementors, ec.Variables) + + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Mutation", + }) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -619,7 +747,7 @@ func (ec *executionContext) _Mutation_createReview(ctx context.Context, field gr var err error err = (&arg0).UnmarshalGQL(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } @@ -629,21 +757,23 @@ func (ec *executionContext) _Mutation_createReview(ctx context.Context, field gr var err error arg1, err = UnmarshalReviewInput(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["review"] = arg1 - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Mutation", - Args: args, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Mutation_createReview(rctx, args["episode"].(Episode), args["review"].(Review)) + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Mutation" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Mutation_createReview(ctx, args["episode"].(Episode), args["review"].(Review)) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -661,6 +791,7 @@ var pageInfoImplementors = []string{"PageInfo"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _PageInfo(ctx context.Context, sel []query.Selection, obj *PageInfo) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, pageInfoImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -683,16 +814,34 @@ func (ec *executionContext) _PageInfo(ctx context.Context, sel []query.Selection } func (ec *executionContext) _PageInfo_startCursor(ctx context.Context, field graphql.CollectedField, obj *PageInfo) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "PageInfo" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.StartCursor return graphql.MarshalID(res) } func (ec *executionContext) _PageInfo_endCursor(ctx context.Context, field graphql.CollectedField, obj *PageInfo) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "PageInfo" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.EndCursor return graphql.MarshalID(res) } func (ec *executionContext) _PageInfo_hasNextPage(ctx context.Context, field graphql.CollectedField, obj *PageInfo) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "PageInfo" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.HasNextPage return graphql.MarshalBoolean(res) } @@ -702,6 +851,11 @@ var queryImplementors = []string{"Query"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Query(ctx context.Context, sel []query.Selection) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, queryImplementors, ec.Variables) + + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + }) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -742,7 +896,7 @@ func (ec *executionContext) _Query_hero(ctx context.Context, field graphql.Colle var err error err = (&arg0).UnmarshalGQL(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } else { @@ -750,30 +904,31 @@ func (ec *executionContext) _Query_hero(ctx context.Context, field graphql.Colle var err error err = (&arg0).UnmarshalGQL(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["episode"] = arg0 + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + Args: args, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Query", - Args: args, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Query_hero(rctx, args["episode"].(Episode)) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Query_hero(ctx, args["episode"].(Episode)) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -791,7 +946,7 @@ func (ec *executionContext) _Query_reviews(ctx context.Context, field graphql.Co var err error err = (&arg0).UnmarshalGQL(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } @@ -806,29 +961,30 @@ func (ec *executionContext) _Query_reviews(ctx context.Context, field graphql.Co } if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["since"] = arg1 + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + Args: args, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Query", - Args: args, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Query_reviews(rctx, args["episode"].(Episode), args["since"].(*time.Time)) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Query_reviews(ctx, args["episode"].(Episode), args["since"].(*time.Time)) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -837,7 +993,12 @@ func (ec *executionContext) _Query_reviews(ctx context.Context, field graphql.Co res := resTmp.([]Review) arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return ec._Review(ctx, field.Selections, &res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return ec._Review(ctx, field.Selections, &res[idx1]) + }()) } return arr1 }) @@ -850,29 +1011,30 @@ func (ec *executionContext) _Query_search(ctx context.Context, field graphql.Col var err error arg0, err = graphql.UnmarshalString(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["text"] = arg0 + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + Args: args, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Query", - Args: args, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Query_search(rctx, args["text"].(string)) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Query_search(ctx, args["text"].(string)) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -881,7 +1043,12 @@ func (ec *executionContext) _Query_search(ctx context.Context, field graphql.Col res := resTmp.([]SearchResult) arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return ec._SearchResult(ctx, field.Selections, &res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return ec._SearchResult(ctx, field.Selections, &res[idx1]) + }()) } return arr1 }) @@ -894,29 +1061,30 @@ func (ec *executionContext) _Query_character(ctx context.Context, field graphql. var err error arg0, err = graphql.UnmarshalID(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["id"] = arg0 + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + Args: args, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Query", - Args: args, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Query_character(rctx, args["id"].(string)) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Query_character(ctx, args["id"].(string)) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -934,29 +1102,30 @@ func (ec *executionContext) _Query_droid(ctx context.Context, field graphql.Coll var err error arg0, err = graphql.UnmarshalID(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["id"] = arg0 + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + Args: args, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Query", - Args: args, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Query_droid(rctx, args["id"].(string)) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Query_droid(ctx, args["id"].(string)) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -977,29 +1146,30 @@ func (ec *executionContext) _Query_human(ctx context.Context, field graphql.Coll var err error arg0, err = graphql.UnmarshalID(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["id"] = arg0 + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + Args: args, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Query", - Args: args, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Query_human(rctx, args["id"].(string)) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Query_human(ctx, args["id"].(string)) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -1020,29 +1190,30 @@ func (ec *executionContext) _Query_starship(ctx context.Context, field graphql.C var err error arg0, err = graphql.UnmarshalID(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["id"] = arg0 + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + Args: args, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Query", - Args: args, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Query_starship(rctx, args["id"].(string)) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Query_starship(ctx, args["id"].(string)) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -1057,6 +1228,12 @@ func (ec *executionContext) _Query_starship(ctx context.Context, field graphql.C } func (ec *executionContext) _Query___schema(ctx context.Context, field graphql.CollectedField) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Query" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := ec.introspectSchema() if res == nil { return graphql.Null @@ -1071,11 +1248,17 @@ func (ec *executionContext) _Query___type(ctx context.Context, field graphql.Col var err error arg0, err = graphql.UnmarshalString(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["name"] = arg0 + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Query" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := ec.introspectType(args["name"].(string)) if res == nil { return graphql.Null @@ -1088,6 +1271,7 @@ var reviewImplementors = []string{"Review"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Review(ctx context.Context, sel []query.Selection, obj *Review) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, reviewImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -1110,11 +1294,23 @@ func (ec *executionContext) _Review(ctx context.Context, sel []query.Selection, } func (ec *executionContext) _Review_stars(ctx context.Context, field graphql.CollectedField, obj *Review) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Review" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Stars return graphql.MarshalInt(res) } func (ec *executionContext) _Review_commentary(ctx context.Context, field graphql.CollectedField, obj *Review) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Review" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Commentary if res == nil { return graphql.Null @@ -1123,6 +1319,12 @@ func (ec *executionContext) _Review_commentary(ctx context.Context, field graphq } func (ec *executionContext) _Review_time(ctx context.Context, field graphql.CollectedField, obj *Review) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Review" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Time return graphql.MarshalTime(res) } @@ -1132,6 +1334,7 @@ var starshipImplementors = []string{"Starship"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Starship(ctx context.Context, sel []query.Selection, obj *Starship) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, starshipImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -1156,11 +1359,23 @@ func (ec *executionContext) _Starship(ctx context.Context, sel []query.Selection } func (ec *executionContext) _Starship_id(ctx context.Context, field graphql.CollectedField, obj *Starship) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Starship" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.ID return graphql.MarshalID(res) } func (ec *executionContext) _Starship_name(ctx context.Context, field graphql.CollectedField, obj *Starship) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Starship" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name return graphql.MarshalString(res) } @@ -1172,7 +1387,7 @@ func (ec *executionContext) _Starship_length(ctx context.Context, field graphql. var err error err = (&arg0).UnmarshalGQL(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } else { @@ -1180,24 +1395,44 @@ func (ec *executionContext) _Starship_length(ctx context.Context, field graphql. var err error err = (&arg0).UnmarshalGQL(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["unit"] = arg0 + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Starship" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Length(args["unit"].(LengthUnit)) return graphql.MarshalFloat(res) } func (ec *executionContext) _Starship_history(ctx context.Context, field graphql.CollectedField, obj *Starship) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Starship" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.History arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() arr2 := graphql.Array{} for idx2 := range res[idx1] { - arr2 = append(arr2, func() graphql.Marshaler { return graphql.MarshalInt(res[idx1][idx2]) }()) + arr2 = append(arr2, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx2) + defer rctx.Pop() + return graphql.MarshalInt(res[idx1][idx2]) + }()) } return arr2 }()) @@ -1210,6 +1445,7 @@ var __DirectiveImplementors = []string{"__Directive"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Directive(ctx context.Context, sel []query.Selection, obj *introspection.Directive) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __DirectiveImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -1234,11 +1470,23 @@ func (ec *executionContext) ___Directive(ctx context.Context, sel []query.Select } func (ec *executionContext) ___Directive_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___Directive_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -1247,19 +1495,39 @@ func (ec *executionContext) ___Directive_description(ctx context.Context, field } func (ec *executionContext) ___Directive_locations(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Locations() arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return graphql.MarshalString(res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return graphql.MarshalString(res[idx1]) + }()) } return arr1 } func (ec *executionContext) ___Directive_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Args() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -1274,6 +1542,7 @@ var __EnumValueImplementors = []string{"__EnumValue"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___EnumValue(ctx context.Context, sel []query.Selection, obj *introspection.EnumValue) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __EnumValueImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -1298,11 +1567,23 @@ func (ec *executionContext) ___EnumValue(ctx context.Context, sel []query.Select } func (ec *executionContext) ___EnumValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___EnumValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -1311,11 +1592,23 @@ func (ec *executionContext) ___EnumValue_description(ctx context.Context, field } func (ec *executionContext) ___EnumValue_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.IsDeprecated() return graphql.MarshalBoolean(res) } func (ec *executionContext) ___EnumValue_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.DeprecationReason() if res == nil { return graphql.Null @@ -1328,6 +1621,7 @@ var __FieldImplementors = []string{"__Field"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Field(ctx context.Context, sel []query.Selection, obj *introspection.Field) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __FieldImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -1356,11 +1650,23 @@ func (ec *executionContext) ___Field(ctx context.Context, sel []query.Selection, } func (ec *executionContext) ___Field_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___Field_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -1369,10 +1675,19 @@ func (ec *executionContext) ___Field_description(ctx context.Context, field grap } func (ec *executionContext) ___Field_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Args() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -1383,6 +1698,12 @@ func (ec *executionContext) ___Field_args(ctx context.Context, field graphql.Col } func (ec *executionContext) ___Field_type(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Type() if res == nil { return graphql.Null @@ -1391,11 +1712,23 @@ func (ec *executionContext) ___Field_type(ctx context.Context, field graphql.Col } func (ec *executionContext) ___Field_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.IsDeprecated() return graphql.MarshalBoolean(res) } func (ec *executionContext) ___Field_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.DeprecationReason() if res == nil { return graphql.Null @@ -1408,6 +1741,7 @@ var __InputValueImplementors = []string{"__InputValue"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___InputValue(ctx context.Context, sel []query.Selection, obj *introspection.InputValue) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __InputValueImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -1432,11 +1766,23 @@ func (ec *executionContext) ___InputValue(ctx context.Context, sel []query.Selec } func (ec *executionContext) ___InputValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___InputValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -1445,6 +1791,12 @@ func (ec *executionContext) ___InputValue_description(ctx context.Context, field } func (ec *executionContext) ___InputValue_type(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Type() if res == nil { return graphql.Null @@ -1453,6 +1805,12 @@ func (ec *executionContext) ___InputValue_type(ctx context.Context, field graphq } func (ec *executionContext) ___InputValue_defaultValue(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.DefaultValue() if res == nil { return graphql.Null @@ -1465,6 +1823,7 @@ var __SchemaImplementors = []string{"__Schema"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Schema(ctx context.Context, sel []query.Selection, obj *introspection.Schema) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __SchemaImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -1491,10 +1850,19 @@ func (ec *executionContext) ___Schema(ctx context.Context, sel []query.Selection } func (ec *executionContext) ___Schema_types(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Types() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -1505,6 +1873,12 @@ func (ec *executionContext) ___Schema_types(ctx context.Context, field graphql.C } func (ec *executionContext) ___Schema_queryType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.QueryType() if res == nil { return graphql.Null @@ -1513,6 +1887,12 @@ func (ec *executionContext) ___Schema_queryType(ctx context.Context, field graph } func (ec *executionContext) ___Schema_mutationType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.MutationType() if res == nil { return graphql.Null @@ -1521,6 +1901,12 @@ func (ec *executionContext) ___Schema_mutationType(ctx context.Context, field gr } func (ec *executionContext) ___Schema_subscriptionType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.SubscriptionType() if res == nil { return graphql.Null @@ -1529,10 +1915,19 @@ func (ec *executionContext) ___Schema_subscriptionType(ctx context.Context, fiel } func (ec *executionContext) ___Schema_directives(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Directives() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -1547,6 +1942,7 @@ var __TypeImplementors = []string{"__Type"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Type(ctx context.Context, sel []query.Selection, obj *introspection.Type) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __TypeImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -1581,11 +1977,23 @@ func (ec *executionContext) ___Type(ctx context.Context, sel []query.Selection, } func (ec *executionContext) ___Type_kind(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Kind() return graphql.MarshalString(res) } func (ec *executionContext) ___Type_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() if res == nil { return graphql.Null @@ -1594,6 +2002,12 @@ func (ec *executionContext) ___Type_name(ctx context.Context, field graphql.Coll } func (ec *executionContext) ___Type_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -1608,15 +2022,24 @@ func (ec *executionContext) ___Type_fields(ctx context.Context, field graphql.Co var err error arg0, err = graphql.UnmarshalBoolean(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["includeDeprecated"] = arg0 + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Fields(args["includeDeprecated"].(bool)) arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -1627,10 +2050,19 @@ func (ec *executionContext) ___Type_fields(ctx context.Context, field graphql.Co } func (ec *executionContext) ___Type_interfaces(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Interfaces() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -1641,10 +2073,19 @@ func (ec *executionContext) ___Type_interfaces(ctx context.Context, field graphq } func (ec *executionContext) ___Type_possibleTypes(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.PossibleTypes() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -1661,15 +2102,24 @@ func (ec *executionContext) ___Type_enumValues(ctx context.Context, field graphq var err error arg0, err = graphql.UnmarshalBoolean(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["includeDeprecated"] = arg0 + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.EnumValues(args["includeDeprecated"].(bool)) arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -1680,10 +2130,19 @@ func (ec *executionContext) ___Type_enumValues(ctx context.Context, field graphq } func (ec *executionContext) ___Type_inputFields(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.InputFields() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -1694,6 +2153,12 @@ func (ec *executionContext) ___Type_inputFields(ctx context.Context, field graph } func (ec *executionContext) ___Type_ofType(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.OfType() if res == nil { return graphql.Null diff --git a/example/todo/generated.go b/example/todo/generated.go index 8b4769bfddf..4506eabca99 100644 --- a/example/todo/generated.go +++ b/example/todo/generated.go @@ -8,7 +8,6 @@ import ( strconv "strconv" graphql "github.com/vektah/gqlgen/graphql" - errors "github.com/vektah/gqlgen/neelance/errors" introspection "github.com/vektah/gqlgen/neelance/introspection" query "github.com/vektah/gqlgen/neelance/query" schema "github.com/vektah/gqlgen/neelance/schema" @@ -67,7 +66,7 @@ func (e *executableSchema) Mutation(ctx context.Context, op *query.Operation) *g } func (e *executableSchema) Subscription(ctx context.Context, op *query.Operation) func() *graphql.Response { - return graphql.OneShot(&graphql.Response{Errors: []*errors.QueryError{{Message: "subscriptions are not supported"}}}) + return graphql.OneShot(graphql.ErrorResponse(ctx, "subscriptions are not supported")) } type executionContext struct { @@ -81,6 +80,11 @@ var myMutationImplementors = []string{"MyMutation"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _MyMutation(ctx context.Context, sel []query.Selection) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, myMutationImplementors, ec.Variables) + + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "MyMutation", + }) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -107,21 +111,23 @@ func (ec *executionContext) _MyMutation_createTodo(ctx context.Context, field gr var err error arg0, err = UnmarshalTodoInput(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["todo"] = arg0 - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "MyMutation", - Args: args, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.MyMutation_createTodo(rctx, args["todo"].(TodoInput)) + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "MyMutation" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.MyMutation_createTodo(ctx, args["todo"].(TodoInput)) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -138,7 +144,7 @@ func (ec *executionContext) _MyMutation_updateTodo(ctx context.Context, field gr var err error arg0, err = graphql.UnmarshalInt(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } @@ -148,21 +154,23 @@ func (ec *executionContext) _MyMutation_updateTodo(ctx context.Context, field gr var err error arg1 = tmp.(map[string]interface{}) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["changes"] = arg1 - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "MyMutation", - Args: args, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.MyMutation_updateTodo(rctx, args["id"].(int), args["changes"].(map[string]interface{})) + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "MyMutation" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.MyMutation_updateTodo(ctx, args["id"].(int), args["changes"].(map[string]interface{})) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -180,6 +188,11 @@ var myQueryImplementors = []string{"MyQuery"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _MyQuery(ctx context.Context, sel []query.Selection) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, myQueryImplementors, ec.Variables) + + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "MyQuery", + }) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -212,29 +225,30 @@ func (ec *executionContext) _MyQuery_todo(ctx context.Context, field graphql.Col var err error arg0, err = graphql.UnmarshalInt(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["id"] = arg0 + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "MyQuery", + Args: args, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "MyQuery", - Args: args, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.MyQuery_todo(rctx, args["id"].(int)) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.MyQuery_todo(ctx, args["id"].(int)) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -249,24 +263,25 @@ func (ec *executionContext) _MyQuery_todo(ctx context.Context, field graphql.Col } func (ec *executionContext) _MyQuery_lastTodo(ctx context.Context, field graphql.CollectedField) graphql.Marshaler { + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "MyQuery", + Args: nil, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "MyQuery", - Args: nil, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.MyQuery_lastTodo(rctx) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.MyQuery_lastTodo(ctx) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -281,24 +296,25 @@ func (ec *executionContext) _MyQuery_lastTodo(ctx context.Context, field graphql } func (ec *executionContext) _MyQuery_todos(ctx context.Context, field graphql.CollectedField) graphql.Marshaler { + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "MyQuery", + Args: nil, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "MyQuery", - Args: nil, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.MyQuery_todos(rctx) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.MyQuery_todos(ctx) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -307,13 +323,24 @@ func (ec *executionContext) _MyQuery_todos(ctx context.Context, field graphql.Co res := resTmp.([]Todo) arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return ec._Todo(ctx, field.Selections, &res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return ec._Todo(ctx, field.Selections, &res[idx1]) + }()) } return arr1 }) } func (ec *executionContext) _MyQuery___schema(ctx context.Context, field graphql.CollectedField) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "MyQuery" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := ec.introspectSchema() if res == nil { return graphql.Null @@ -328,11 +355,17 @@ func (ec *executionContext) _MyQuery___type(ctx context.Context, field graphql.C var err error arg0, err = graphql.UnmarshalString(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["name"] = arg0 + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "MyQuery" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := ec.introspectType(args["name"].(string)) if res == nil { return graphql.Null @@ -345,6 +378,7 @@ var todoImplementors = []string{"Todo"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Todo(ctx context.Context, sel []query.Selection, obj *Todo) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, todoImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -367,16 +401,34 @@ func (ec *executionContext) _Todo(ctx context.Context, sel []query.Selection, ob } func (ec *executionContext) _Todo_id(ctx context.Context, field graphql.CollectedField, obj *Todo) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Todo" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.ID return graphql.MarshalInt(res) } func (ec *executionContext) _Todo_text(ctx context.Context, field graphql.CollectedField, obj *Todo) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Todo" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Text return graphql.MarshalString(res) } func (ec *executionContext) _Todo_done(ctx context.Context, field graphql.CollectedField, obj *Todo) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Todo" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Done return graphql.MarshalBoolean(res) } @@ -386,6 +438,7 @@ var __DirectiveImplementors = []string{"__Directive"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Directive(ctx context.Context, sel []query.Selection, obj *introspection.Directive) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __DirectiveImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -410,11 +463,23 @@ func (ec *executionContext) ___Directive(ctx context.Context, sel []query.Select } func (ec *executionContext) ___Directive_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___Directive_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -423,19 +488,39 @@ func (ec *executionContext) ___Directive_description(ctx context.Context, field } func (ec *executionContext) ___Directive_locations(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Locations() arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return graphql.MarshalString(res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return graphql.MarshalString(res[idx1]) + }()) } return arr1 } func (ec *executionContext) ___Directive_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Args() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -450,6 +535,7 @@ var __EnumValueImplementors = []string{"__EnumValue"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___EnumValue(ctx context.Context, sel []query.Selection, obj *introspection.EnumValue) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __EnumValueImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -474,11 +560,23 @@ func (ec *executionContext) ___EnumValue(ctx context.Context, sel []query.Select } func (ec *executionContext) ___EnumValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___EnumValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -487,11 +585,23 @@ func (ec *executionContext) ___EnumValue_description(ctx context.Context, field } func (ec *executionContext) ___EnumValue_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.IsDeprecated() return graphql.MarshalBoolean(res) } func (ec *executionContext) ___EnumValue_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.DeprecationReason() if res == nil { return graphql.Null @@ -504,6 +614,7 @@ var __FieldImplementors = []string{"__Field"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Field(ctx context.Context, sel []query.Selection, obj *introspection.Field) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __FieldImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -532,11 +643,23 @@ func (ec *executionContext) ___Field(ctx context.Context, sel []query.Selection, } func (ec *executionContext) ___Field_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___Field_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -545,10 +668,19 @@ func (ec *executionContext) ___Field_description(ctx context.Context, field grap } func (ec *executionContext) ___Field_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Args() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -559,6 +691,12 @@ func (ec *executionContext) ___Field_args(ctx context.Context, field graphql.Col } func (ec *executionContext) ___Field_type(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Type() if res == nil { return graphql.Null @@ -567,11 +705,23 @@ func (ec *executionContext) ___Field_type(ctx context.Context, field graphql.Col } func (ec *executionContext) ___Field_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.IsDeprecated() return graphql.MarshalBoolean(res) } func (ec *executionContext) ___Field_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.DeprecationReason() if res == nil { return graphql.Null @@ -584,6 +734,7 @@ var __InputValueImplementors = []string{"__InputValue"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___InputValue(ctx context.Context, sel []query.Selection, obj *introspection.InputValue) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __InputValueImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -608,11 +759,23 @@ func (ec *executionContext) ___InputValue(ctx context.Context, sel []query.Selec } func (ec *executionContext) ___InputValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___InputValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -621,6 +784,12 @@ func (ec *executionContext) ___InputValue_description(ctx context.Context, field } func (ec *executionContext) ___InputValue_type(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Type() if res == nil { return graphql.Null @@ -629,6 +798,12 @@ func (ec *executionContext) ___InputValue_type(ctx context.Context, field graphq } func (ec *executionContext) ___InputValue_defaultValue(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.DefaultValue() if res == nil { return graphql.Null @@ -641,6 +816,7 @@ var __SchemaImplementors = []string{"__Schema"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Schema(ctx context.Context, sel []query.Selection, obj *introspection.Schema) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __SchemaImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -667,10 +843,19 @@ func (ec *executionContext) ___Schema(ctx context.Context, sel []query.Selection } func (ec *executionContext) ___Schema_types(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Types() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -681,6 +866,12 @@ func (ec *executionContext) ___Schema_types(ctx context.Context, field graphql.C } func (ec *executionContext) ___Schema_queryType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.QueryType() if res == nil { return graphql.Null @@ -689,6 +880,12 @@ func (ec *executionContext) ___Schema_queryType(ctx context.Context, field graph } func (ec *executionContext) ___Schema_mutationType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.MutationType() if res == nil { return graphql.Null @@ -697,6 +894,12 @@ func (ec *executionContext) ___Schema_mutationType(ctx context.Context, field gr } func (ec *executionContext) ___Schema_subscriptionType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.SubscriptionType() if res == nil { return graphql.Null @@ -705,10 +908,19 @@ func (ec *executionContext) ___Schema_subscriptionType(ctx context.Context, fiel } func (ec *executionContext) ___Schema_directives(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Directives() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -723,6 +935,7 @@ var __TypeImplementors = []string{"__Type"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Type(ctx context.Context, sel []query.Selection, obj *introspection.Type) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __TypeImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -757,11 +970,23 @@ func (ec *executionContext) ___Type(ctx context.Context, sel []query.Selection, } func (ec *executionContext) ___Type_kind(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Kind() return graphql.MarshalString(res) } func (ec *executionContext) ___Type_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() if res == nil { return graphql.Null @@ -770,6 +995,12 @@ func (ec *executionContext) ___Type_name(ctx context.Context, field graphql.Coll } func (ec *executionContext) ___Type_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -784,15 +1015,24 @@ func (ec *executionContext) ___Type_fields(ctx context.Context, field graphql.Co var err error arg0, err = graphql.UnmarshalBoolean(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["includeDeprecated"] = arg0 + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Fields(args["includeDeprecated"].(bool)) arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -803,10 +1043,19 @@ func (ec *executionContext) ___Type_fields(ctx context.Context, field graphql.Co } func (ec *executionContext) ___Type_interfaces(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Interfaces() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -817,10 +1066,19 @@ func (ec *executionContext) ___Type_interfaces(ctx context.Context, field graphq } func (ec *executionContext) ___Type_possibleTypes(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.PossibleTypes() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -837,15 +1095,24 @@ func (ec *executionContext) ___Type_enumValues(ctx context.Context, field graphq var err error arg0, err = graphql.UnmarshalBoolean(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["includeDeprecated"] = arg0 + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.EnumValues(args["includeDeprecated"].(bool)) arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -856,10 +1123,19 @@ func (ec *executionContext) ___Type_enumValues(ctx context.Context, field graphq } func (ec *executionContext) ___Type_inputFields(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.InputFields() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -870,6 +1146,12 @@ func (ec *executionContext) ___Type_inputFields(ctx context.Context, field graph } func (ec *executionContext) ___Type_ofType(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.OfType() if res == nil { return graphql.Null diff --git a/test/generated.go b/test/generated.go index c1d86e07894..c0aebd89ac2 100644 --- a/test/generated.go +++ b/test/generated.go @@ -9,7 +9,6 @@ import ( strconv "strconv" graphql "github.com/vektah/gqlgen/graphql" - errors "github.com/vektah/gqlgen/neelance/errors" introspection "github.com/vektah/gqlgen/neelance/introspection" query "github.com/vektah/gqlgen/neelance/query" schema "github.com/vektah/gqlgen/neelance/schema" @@ -23,6 +22,10 @@ func MakeExecutableSchema(resolvers Resolvers) graphql.ExecutableSchema { } type Resolvers interface { + Element_child(ctx context.Context, obj *Element) (Element, error) + Element_error(ctx context.Context, obj *Element, message *string) (bool, error) + + Mutation_path(ctx context.Context) ([]Element, error) OuterObject_inner(ctx context.Context, obj *models.OuterObject) (models.InnerObject, error) Query_nestedInputs(ctx context.Context, input [][]models.OuterInput) (*bool, error) Query_nestedOutputs(ctx context.Context) ([][]models.OuterObject, error) @@ -58,11 +61,23 @@ func (e *executableSchema) Query(ctx context.Context, op *query.Operation) *grap } func (e *executableSchema) Mutation(ctx context.Context, op *query.Operation) *graphql.Response { - return &graphql.Response{Errors: []*errors.QueryError{{Message: "mutations are not supported"}}} + ec := executionContext{graphql.GetRequestContext(ctx), e.resolvers} + + buf := ec.RequestMiddleware(ctx, func(ctx context.Context) []byte { + data := ec._Mutation(ctx, op.Selections) + var buf bytes.Buffer + data.MarshalGQL(&buf) + return buf.Bytes() + }) + + return &graphql.Response{ + Data: buf, + Errors: ec.Errors, + } } func (e *executableSchema) Subscription(ctx context.Context, op *query.Operation) func() *graphql.Response { - return graphql.OneShot(&graphql.Response{Errors: []*errors.QueryError{{Message: "subscriptions are not supported"}}}) + return graphql.OneShot(graphql.ErrorResponse(ctx, "subscriptions are not supported")) } type executionContext struct { @@ -76,6 +91,7 @@ var circleImplementors = []string{"Circle", "Shape"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Circle(ctx context.Context, sel []query.Selection, obj *Circle) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, circleImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -96,20 +112,134 @@ func (ec *executionContext) _Circle(ctx context.Context, sel []query.Selection, } func (ec *executionContext) _Circle_radius(ctx context.Context, field graphql.CollectedField, obj *Circle) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Circle" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Radius return graphql.MarshalFloat(res) } func (ec *executionContext) _Circle_area(ctx context.Context, field graphql.CollectedField, obj *Circle) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Circle" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Area() return graphql.MarshalFloat(res) } +var elementImplementors = []string{"Element"} + +// nolint: gocyclo, errcheck, gas, goconst +func (ec *executionContext) _Element(ctx context.Context, sel []query.Selection, obj *Element) graphql.Marshaler { + fields := graphql.CollectFields(ec.Doc, sel, elementImplementors, ec.Variables) + + out := graphql.NewOrderedMap(len(fields)) + for i, field := range fields { + out.Keys[i] = field.Alias + + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("Element") + case "child": + out.Values[i] = ec._Element_child(ctx, field, obj) + case "error": + out.Values[i] = ec._Element_error(ctx, field, obj) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + + return out +} + +func (ec *executionContext) _Element_child(ctx context.Context, field graphql.CollectedField, obj *Element) graphql.Marshaler { + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Element", + Args: nil, + Field: field, + }) + return graphql.Defer(func() (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + userErr := ec.Recover(ctx, r) + ec.Error(ctx, userErr) + ret = graphql.Null + } + }() + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Element_child(ctx, obj) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(Element) + return ec._Element(ctx, field.Selections, &res) + }) +} + +func (ec *executionContext) _Element_error(ctx context.Context, field graphql.CollectedField, obj *Element) graphql.Marshaler { + args := map[string]interface{}{} + var arg0 *string + if tmp, ok := field.Args["message"]; ok { + var err error + var ptr1 string + if tmp != nil { + ptr1, err = graphql.UnmarshalString(tmp) + arg0 = &ptr1 + } + + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + } + args["message"] = arg0 + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Element", + Args: args, + Field: field, + }) + return graphql.Defer(func() (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + userErr := ec.Recover(ctx, r) + ec.Error(ctx, userErr) + ret = graphql.Null + } + }() + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Element_error(ctx, obj, args["message"].(*string)) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(bool) + return graphql.MarshalBoolean(res) + }) +} + var innerObjectImplementors = []string{"InnerObject"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _InnerObject(ctx context.Context, sel []query.Selection, obj *models.InnerObject) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, innerObjectImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -128,6 +258,12 @@ func (ec *executionContext) _InnerObject(ctx context.Context, sel []query.Select } func (ec *executionContext) _InnerObject_id(ctx context.Context, field graphql.CollectedField, obj *models.InnerObject) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "InnerObject" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.ID return graphql.MarshalInt(res) } @@ -137,6 +273,7 @@ var invalidIdentifierImplementors = []string{"InvalidIdentifier"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _InvalidIdentifier(ctx context.Context, sel []query.Selection, obj *invalid_identifier.InvalidIdentifier) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, invalidIdentifierImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -155,6 +292,12 @@ func (ec *executionContext) _InvalidIdentifier(ctx context.Context, sel []query. } func (ec *executionContext) _InvalidIdentifier_id(ctx context.Context, field graphql.CollectedField, obj *invalid_identifier.InvalidIdentifier) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "InvalidIdentifier" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.ID return graphql.MarshalInt(res) } @@ -164,6 +307,7 @@ var itImplementors = []string{"It"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _It(ctx context.Context, sel []query.Selection, obj *introspection1.It) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, itImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -182,15 +326,80 @@ func (ec *executionContext) _It(ctx context.Context, sel []query.Selection, obj } func (ec *executionContext) _It_id(ctx context.Context, field graphql.CollectedField, obj *introspection1.It) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "It" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.ID return graphql.MarshalID(res) } +var mutationImplementors = []string{"Mutation"} + +// nolint: gocyclo, errcheck, gas, goconst +func (ec *executionContext) _Mutation(ctx context.Context, sel []query.Selection) graphql.Marshaler { + fields := graphql.CollectFields(ec.Doc, sel, mutationImplementors, ec.Variables) + + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Mutation", + }) + + out := graphql.NewOrderedMap(len(fields)) + for i, field := range fields { + out.Keys[i] = field.Alias + + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("Mutation") + case "path": + out.Values[i] = ec._Mutation_path(ctx, field) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + + return out +} + +func (ec *executionContext) _Mutation_path(ctx context.Context, field graphql.CollectedField) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Mutation" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Mutation_path(ctx) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.([]Element) + arr1 := graphql.Array{} + for idx1 := range res { + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return ec._Element(ctx, field.Selections, &res[idx1]) + }()) + } + return arr1 +} + var outerObjectImplementors = []string{"OuterObject"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _OuterObject(ctx context.Context, sel []query.Selection, obj *models.OuterObject) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, outerObjectImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -209,24 +418,25 @@ func (ec *executionContext) _OuterObject(ctx context.Context, sel []query.Select } func (ec *executionContext) _OuterObject_inner(ctx context.Context, field graphql.CollectedField, obj *models.OuterObject) graphql.Marshaler { + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "OuterObject", + Args: nil, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "OuterObject", - Args: nil, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.OuterObject_inner(rctx, obj) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.OuterObject_inner(ctx, obj) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -242,6 +452,11 @@ var queryImplementors = []string{"Query"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Query(ctx context.Context, sel []query.Selection) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, queryImplementors, ec.Variables) + + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + }) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -290,7 +505,7 @@ func (ec *executionContext) _Query_nestedInputs(ctx context.Context, field graph } } if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } else { @@ -306,30 +521,31 @@ func (ec *executionContext) _Query_nestedInputs(ctx context.Context, field graph } } if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["input"] = arg0 + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + Args: args, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Query", - Args: args, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Query_nestedInputs(rctx, args["input"].([][]models.OuterInput)) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Query_nestedInputs(ctx, args["input"].([][]models.OuterInput)) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -344,24 +560,25 @@ func (ec *executionContext) _Query_nestedInputs(ctx context.Context, field graph } func (ec *executionContext) _Query_nestedOutputs(ctx context.Context, field graphql.CollectedField) graphql.Marshaler { + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + Args: nil, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Query", - Args: nil, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Query_nestedOutputs(rctx) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Query_nestedOutputs(ctx) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -371,9 +588,17 @@ func (ec *executionContext) _Query_nestedOutputs(ctx context.Context, field grap arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() arr2 := graphql.Array{} for idx2 := range res[idx1] { - arr2 = append(arr2, func() graphql.Marshaler { return ec._OuterObject(ctx, field.Selections, &res[idx1][idx2]) }()) + arr2 = append(arr2, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx2) + defer rctx.Pop() + return ec._OuterObject(ctx, field.Selections, &res[idx1][idx2]) + }()) } return arr2 }()) @@ -383,24 +608,25 @@ func (ec *executionContext) _Query_nestedOutputs(ctx context.Context, field grap } func (ec *executionContext) _Query_shapes(ctx context.Context, field graphql.CollectedField) graphql.Marshaler { + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + Args: nil, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Query", - Args: nil, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Query_shapes(rctx) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Query_shapes(ctx) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -409,7 +635,12 @@ func (ec *executionContext) _Query_shapes(ctx context.Context, field graphql.Col res := resTmp.([]Shape) arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return ec._Shape(ctx, field.Selections, &res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return ec._Shape(ctx, field.Selections, &res[idx1]) + }()) } return arr1 }) @@ -427,29 +658,30 @@ func (ec *executionContext) _Query_recursive(ctx context.Context, field graphql. } if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["input"] = arg0 + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + Args: args, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Query", - Args: args, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Query_recursive(rctx, args["input"].(*RecursiveInputSlice)) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Query_recursive(ctx, args["input"].(*RecursiveInputSlice)) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -475,29 +707,30 @@ func (ec *executionContext) _Query_mapInput(ctx context.Context, field graphql.C } if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["input"] = arg0 + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + Args: args, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Query", - Args: args, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Query_mapInput(rctx, args["input"].(*map[string]interface{})) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Query_mapInput(ctx, args["input"].(*map[string]interface{})) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -512,24 +745,25 @@ func (ec *executionContext) _Query_mapInput(ctx context.Context, field graphql.C } func (ec *executionContext) _Query_collision(ctx context.Context, field graphql.CollectedField) graphql.Marshaler { + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + Args: nil, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Query", - Args: nil, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Query_collision(rctx) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Query_collision(ctx) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -544,24 +778,25 @@ func (ec *executionContext) _Query_collision(ctx context.Context, field graphql. } func (ec *executionContext) _Query_invalidIdentifier(ctx context.Context, field graphql.CollectedField) graphql.Marshaler { + ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ + Object: "Query", + Args: nil, + Field: field, + }) return graphql.Defer(func() (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { userErr := ec.Recover(ctx, r) - ec.Error(userErr) + ec.Error(ctx, userErr) ret = graphql.Null } }() - rctx := graphql.WithResolverContext(ctx, &graphql.ResolverContext{ - Object: "Query", - Args: nil, - Field: field, - }) - resTmp, err := ec.ResolverMiddleware(rctx, func(rctx context.Context) (interface{}, error) { - return ec.resolvers.Query_invalidIdentifier(rctx) + + resTmp, err := ec.ResolverMiddleware(ctx, func(ctx context.Context) (interface{}, error) { + return ec.resolvers.Query_invalidIdentifier(ctx) }) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } if resTmp == nil { @@ -576,6 +811,12 @@ func (ec *executionContext) _Query_invalidIdentifier(ctx context.Context, field } func (ec *executionContext) _Query___schema(ctx context.Context, field graphql.CollectedField) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Query" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := ec.introspectSchema() if res == nil { return graphql.Null @@ -590,11 +831,17 @@ func (ec *executionContext) _Query___type(ctx context.Context, field graphql.Col var err error arg0, err = graphql.UnmarshalString(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["name"] = arg0 + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Query" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := ec.introspectType(args["name"].(string)) if res == nil { return graphql.Null @@ -607,6 +854,7 @@ var rectangleImplementors = []string{"Rectangle", "Shape"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) _Rectangle(ctx context.Context, sel []query.Selection, obj *Rectangle) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, rectangleImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -629,16 +877,34 @@ func (ec *executionContext) _Rectangle(ctx context.Context, sel []query.Selectio } func (ec *executionContext) _Rectangle_length(ctx context.Context, field graphql.CollectedField, obj *Rectangle) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Rectangle" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Length return graphql.MarshalFloat(res) } func (ec *executionContext) _Rectangle_width(ctx context.Context, field graphql.CollectedField, obj *Rectangle) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Rectangle" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Width return graphql.MarshalFloat(res) } func (ec *executionContext) _Rectangle_area(ctx context.Context, field graphql.CollectedField, obj *Rectangle) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "Rectangle" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Area() return graphql.MarshalFloat(res) } @@ -648,6 +914,7 @@ var __DirectiveImplementors = []string{"__Directive"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Directive(ctx context.Context, sel []query.Selection, obj *introspection.Directive) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __DirectiveImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -672,11 +939,23 @@ func (ec *executionContext) ___Directive(ctx context.Context, sel []query.Select } func (ec *executionContext) ___Directive_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___Directive_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -685,19 +964,39 @@ func (ec *executionContext) ___Directive_description(ctx context.Context, field } func (ec *executionContext) ___Directive_locations(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Locations() arr1 := graphql.Array{} for idx1 := range res { - arr1 = append(arr1, func() graphql.Marshaler { return graphql.MarshalString(res[idx1]) }()) + arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() + return graphql.MarshalString(res[idx1]) + }()) } return arr1 } func (ec *executionContext) ___Directive_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Directive" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Args() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -712,6 +1011,7 @@ var __EnumValueImplementors = []string{"__EnumValue"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___EnumValue(ctx context.Context, sel []query.Selection, obj *introspection.EnumValue) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __EnumValueImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -736,11 +1036,23 @@ func (ec *executionContext) ___EnumValue(ctx context.Context, sel []query.Select } func (ec *executionContext) ___EnumValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___EnumValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -749,11 +1061,23 @@ func (ec *executionContext) ___EnumValue_description(ctx context.Context, field } func (ec *executionContext) ___EnumValue_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.IsDeprecated() return graphql.MarshalBoolean(res) } func (ec *executionContext) ___EnumValue_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__EnumValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.DeprecationReason() if res == nil { return graphql.Null @@ -766,6 +1090,7 @@ var __FieldImplementors = []string{"__Field"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Field(ctx context.Context, sel []query.Selection, obj *introspection.Field) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __FieldImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -794,11 +1119,23 @@ func (ec *executionContext) ___Field(ctx context.Context, sel []query.Selection, } func (ec *executionContext) ___Field_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___Field_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -807,10 +1144,19 @@ func (ec *executionContext) ___Field_description(ctx context.Context, field grap } func (ec *executionContext) ___Field_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Args() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -821,6 +1167,12 @@ func (ec *executionContext) ___Field_args(ctx context.Context, field graphql.Col } func (ec *executionContext) ___Field_type(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Type() if res == nil { return graphql.Null @@ -829,11 +1181,23 @@ func (ec *executionContext) ___Field_type(ctx context.Context, field graphql.Col } func (ec *executionContext) ___Field_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.IsDeprecated() return graphql.MarshalBoolean(res) } func (ec *executionContext) ___Field_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Field" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.DeprecationReason() if res == nil { return graphql.Null @@ -846,6 +1210,7 @@ var __InputValueImplementors = []string{"__InputValue"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___InputValue(ctx context.Context, sel []query.Selection, obj *introspection.InputValue) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __InputValueImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -870,11 +1235,23 @@ func (ec *executionContext) ___InputValue(ctx context.Context, sel []query.Selec } func (ec *executionContext) ___InputValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() return graphql.MarshalString(res) } func (ec *executionContext) ___InputValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -883,6 +1260,12 @@ func (ec *executionContext) ___InputValue_description(ctx context.Context, field } func (ec *executionContext) ___InputValue_type(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Type() if res == nil { return graphql.Null @@ -891,6 +1274,12 @@ func (ec *executionContext) ___InputValue_type(ctx context.Context, field graphq } func (ec *executionContext) ___InputValue_defaultValue(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__InputValue" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.DefaultValue() if res == nil { return graphql.Null @@ -903,6 +1292,7 @@ var __SchemaImplementors = []string{"__Schema"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Schema(ctx context.Context, sel []query.Selection, obj *introspection.Schema) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __SchemaImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -929,10 +1319,19 @@ func (ec *executionContext) ___Schema(ctx context.Context, sel []query.Selection } func (ec *executionContext) ___Schema_types(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Types() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -943,6 +1342,12 @@ func (ec *executionContext) ___Schema_types(ctx context.Context, field graphql.C } func (ec *executionContext) ___Schema_queryType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.QueryType() if res == nil { return graphql.Null @@ -951,6 +1356,12 @@ func (ec *executionContext) ___Schema_queryType(ctx context.Context, field graph } func (ec *executionContext) ___Schema_mutationType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.MutationType() if res == nil { return graphql.Null @@ -959,6 +1370,12 @@ func (ec *executionContext) ___Schema_mutationType(ctx context.Context, field gr } func (ec *executionContext) ___Schema_subscriptionType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.SubscriptionType() if res == nil { return graphql.Null @@ -967,10 +1384,19 @@ func (ec *executionContext) ___Schema_subscriptionType(ctx context.Context, fiel } func (ec *executionContext) ___Schema_directives(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Schema" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Directives() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -985,6 +1411,7 @@ var __TypeImplementors = []string{"__Type"} // nolint: gocyclo, errcheck, gas, goconst func (ec *executionContext) ___Type(ctx context.Context, sel []query.Selection, obj *introspection.Type) graphql.Marshaler { fields := graphql.CollectFields(ec.Doc, sel, __TypeImplementors, ec.Variables) + out := graphql.NewOrderedMap(len(fields)) for i, field := range fields { out.Keys[i] = field.Alias @@ -1019,11 +1446,23 @@ func (ec *executionContext) ___Type(ctx context.Context, sel []query.Selection, } func (ec *executionContext) ___Type_kind(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Kind() return graphql.MarshalString(res) } func (ec *executionContext) ___Type_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Name() if res == nil { return graphql.Null @@ -1032,6 +1471,12 @@ func (ec *executionContext) ___Type_name(ctx context.Context, field graphql.Coll } func (ec *executionContext) ___Type_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Description() if res == nil { return graphql.Null @@ -1046,15 +1491,24 @@ func (ec *executionContext) ___Type_fields(ctx context.Context, field graphql.Co var err error arg0, err = graphql.UnmarshalBoolean(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["includeDeprecated"] = arg0 + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Fields(args["includeDeprecated"].(bool)) arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -1065,10 +1519,19 @@ func (ec *executionContext) ___Type_fields(ctx context.Context, field graphql.Co } func (ec *executionContext) ___Type_interfaces(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.Interfaces() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -1079,10 +1542,19 @@ func (ec *executionContext) ___Type_interfaces(ctx context.Context, field graphq } func (ec *executionContext) ___Type_possibleTypes(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.PossibleTypes() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -1099,15 +1571,24 @@ func (ec *executionContext) ___Type_enumValues(ctx context.Context, field graphq var err error arg0, err = graphql.UnmarshalBoolean(tmp) if err != nil { - ec.Error(err) + ec.Error(ctx, err) return graphql.Null } } args["includeDeprecated"] = arg0 + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = args + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.EnumValues(args["includeDeprecated"].(bool)) arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -1118,10 +1599,19 @@ func (ec *executionContext) ___Type_enumValues(ctx context.Context, field graphq } func (ec *executionContext) ___Type_inputFields(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.InputFields() arr1 := graphql.Array{} for idx1 := range res { arr1 = append(arr1, func() graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.PushIndex(idx1) + defer rctx.Pop() if res[idx1] == nil { return graphql.Null } @@ -1132,6 +1622,12 @@ func (ec *executionContext) ___Type_inputFields(ctx context.Context, field graph } func (ec *executionContext) ___Type_ofType(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) graphql.Marshaler { + rctx := graphql.GetResolverContext(ctx) + rctx.Object = "__Type" + rctx.Args = nil + rctx.Field = field + rctx.PushField(field.Alias) + defer rctx.Pop() res := obj.OfType() if res == nil { return graphql.Null @@ -1291,6 +1787,11 @@ type InvalidIdentifier { id: Int! } +type Element { + child: Element! + error(message: String): Boolean! +} + type Query { nestedInputs(input: [[OuterInput]] = [[{inner: {id: 1}}]]): Boolean nestedOutputs: [[OuterObject]] @@ -1300,4 +1801,8 @@ type Query { collision: It invalidIdentifier: InvalidIdentifier } + +type Mutation { + path: [Element] +} `)