Skip to content

Commit 3c9ac91

Browse files
authored
Merge pull request #420 from dfuse-io/feature/subscription-query-error
Allowed Subscription resolver to return `*QueryError` directly
2 parents 7a585a0 + 46cf654 commit 3c9ac91

File tree

2 files changed

+31
-3
lines changed

2 files changed

+31
-3
lines changed

internal/exec/subscribe.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,15 @@ func (r *Request) Subscribe(ctx context.Context, s *resolvable.Schema, op *query
4949
result = callOut[0]
5050

5151
if f.field.HasError && !callOut[1].IsNil() {
52-
resolverErr := callOut[1].Interface().(error)
53-
err = errors.Errorf("%s", resolverErr)
54-
err.ResolverError = resolverErr
52+
switch resolverErr := callOut[1].Interface().(type) {
53+
case *errors.QueryError:
54+
err = resolverErr
55+
case error:
56+
err = errors.Errorf("%s", resolverErr)
57+
err.ResolverError = resolverErr
58+
default:
59+
panic(fmt.Errorf("can only deal with *QueryError and error types, got %T", resolverErr))
60+
}
5561
}
5662
}()
5763

subscription_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ func (r *helloResolver) Hello() string {
2525
}
2626

2727
var resolverErr = errors.New("resolver error")
28+
var resolverQueryErr = &qerrors.QueryError{Message: "query", ResolverError: resolverErr}
2829

2930
type helloSaidResolver struct {
3031
err error
@@ -266,6 +267,27 @@ func TestSchemaSubscribe(t *testing.T) {
266267
},
267268
},
268269
},
270+
{
271+
Name: "subscription_resolver_can_query_error",
272+
Schema: graphql.MustParseSchema(schema, &rootResolver{
273+
helloSaidResolver: &helloSaidResolver{err: resolverQueryErr},
274+
}),
275+
Query: `
276+
subscription onHelloSaid {
277+
helloSaid {
278+
msg
279+
}
280+
}
281+
`,
282+
ExpectedResults: []gqltesting.TestResponse{
283+
{
284+
Data: json.RawMessage(`
285+
null
286+
`),
287+
Errors: []*qerrors.QueryError{resolverQueryErr},
288+
},
289+
},
290+
},
269291
{
270292
Name: "schema_without_resolver_errors",
271293
Schema: graphql.MustParseSchema(schema, nil),

0 commit comments

Comments
 (0)