1package graphql
2
3import (
4 "context"
5
6 "github.com/vektah/gqlparser/gqlerror"
7)
8
9type ErrorPresenterFunc func(context.Context, error) *gqlerror.Error
10
11type ExtendedError interface {
12 Extensions() map[string]interface{}
13}
14
15func DefaultErrorPresenter(ctx context.Context, err error) *gqlerror.Error {
16 if gqlerr, ok := err.(*gqlerror.Error); ok {
17 gqlerr.Path = GetResolverContext(ctx).Path()
18 return gqlerr
19 }
20
21 var extensions map[string]interface{}
22 if ee, ok := err.(ExtendedError); ok {
23 extensions = ee.Extensions()
24 }
25
26 return &gqlerror.Error{
27 Message: err.Error(),
28 Path: GetResolverContext(ctx).Path(),
29 Extensions: extensions,
30 }
31}