~netlandish/links

4f363120f7fb3aac118c489c56d7263ebff779b3 — Peter Sanchez 4 months ago 3af1e32
Handling error properly when a graphql query formatting error is detected
1 files changed, 16 insertions(+), 7 deletions(-)

M helpers.go
M helpers.go => helpers.go +16 -7
@@ 40,12 40,15 @@ import (
	"netlandish.com/x/gobwebs/validate"
)

// ErrorExtension ...
type ErrorExtension struct {
type errorExtension struct {
	Code  int
	Field string
}

type queryErrorExtension struct {
	Code string `json:"code"`
}

var orgSlugKey = "organization.Slug"
var tzKey = "user.tz"



@@ 56,20 59,26 @@ func ParseInputErrors(c echo.Context, graphError *gqlclient.Error, fMap gobwebs.
	if len(graphError.Extensions) == 0 {
		return graphError
	}
	var ext ErrorExtension

	inputErrs := validate.NewInputErrors()
	var ext errorExtension
	err := json.Unmarshal(graphError.Extensions, &ext)
	if err != nil {
		// Need to address invalid query errors here as they show as
		// json parsing errors when it's valid json. Ie,
		// Try for query error
		// {"code":"GRAPHQL_VALIDATION_FAILED"}
		return err
		var qext queryErrorExtension
		err = json.Unmarshal(graphError.Extensions, &qext)
		if err != nil {
			return err
		}
		inputErrs["_global_"] = []string{fmt.Sprintf("Query error: %s", qext.Code)}
		return inputErrs
	}

	if ext.Code == valid.ErrNotFoundCode {
		return echo.NotFoundHandler(c)
	}

	inputErrs := validate.NewInputErrors()
	if ext.Code == valid.ErrValidationGlobalCode {
		inputErrs["_global_"] = []string{graphError.Message}
		return inputErrs