1package graphql 2 3import ( 4 "errors" 5 6 "github.com/graphql-go/graphql/gqlerrors" 7 "github.com/graphql-go/graphql/language/ast" 8) 9 10func NewLocatedError(err interface{}, nodes []ast.Node) *gqlerrors.Error { 11 return newLocatedError(err, nodes, nil) 12} 13 14func NewLocatedErrorWithPath(err interface{}, nodes []ast.Node, path []interface{}) *gqlerrors.Error { 15 return newLocatedError(err, nodes, path) 16} 17 18func newLocatedError(err interface{}, nodes []ast.Node, path []interface{}) *gqlerrors.Error { 19 if err, ok := err.(*gqlerrors.Error); ok { 20 return err 21 } 22 23 var origError error 24 message := "An unknown error occurred." 25 if err, ok := err.(error); ok { 26 message = err.Error() 27 origError = err 28 } 29 if err, ok := err.(string); ok { 30 message = err 31 origError = errors.New(err) 32 } 33 stack := message 34 return gqlerrors.NewErrorWithPath( 35 message, 36 nodes, 37 stack, 38 nil, 39 []int{}, 40 path, 41 origError, 42 ) 43} 44 45func FieldASTsToNodeASTs(fieldASTs []*ast.Field) []ast.Node { 46 nodes := []ast.Node{} 47 for _, fieldAST := range fieldASTs { 48 nodes = append(nodes, fieldAST) 49 } 50 return nodes 51} 52