error.go

 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}