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 if gqlerr.Path == nil {
18 gqlerr.Path = GetResolverContext(ctx).Path()
19 }
20 return gqlerr
21 }
22
23 var extensions map[string]interface{}
24 if ee, ok := err.(ExtendedError); ok {
25 extensions = ee.Extensions()
26 }
27
28 return &gqlerror.Error{
29 Message: err.Error(),
30 Path: GetResolverContext(ctx).Path(),
31 Extensions: extensions,
32 }
33}