Mercurial > gemma
changeset 2548:6b34d0fb4498
Improve user facing error messages for stretch area generation
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Thu, 07 Mar 2019 20:03:43 +0100 |
parents | 5afca5bc1d7a |
children | 9bf6b767a56a |
files | pkg/imports/bn.go pkg/imports/errors.go pkg/imports/st.go |
diffstat | 3 files changed, 52 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/pkg/imports/bn.go Thu Mar 07 18:05:20 2019 +0100 +++ b/pkg/imports/bn.go Thu Mar 07 20:03:43 2019 +0100 @@ -281,7 +281,7 @@ ).Scan(&nid) if err != nil { feedback.Warn("Failed to insert '%s' into database", bn.OBJNAM) - feedback.Warn("%v", err) + feedback.Warn(handleError(err).Error()) return nil }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkg/imports/errors.go Thu Mar 07 20:03:43 2019 +0100 @@ -0,0 +1,50 @@ +// This is Free Software under GNU Affero General Public License v >= 3.0 +// without warranty, see README.md and license for details. +// +// SPDX-License-Identifier: AGPL-3.0-or-later +// License-Filename: LICENSES/AGPL-3.0.txt +// +// Copyright (C) 2019 by via donau +// – Österreichische Wasserstraßen-Gesellschaft mbH +// Software engineering by Intevation GmbH +// +// Author(s): +// * Tom Gottfried <tom.gottfried@intevation.de> + +package imports + +import ( + "strings" + + "github.com/jackc/pgx" +) + +func handleError(err error) error { + switch e := err.(type) { + case pgx.PgError: + return dbError(e) + } + return err +} + +// Handle PostgreSQL error codes +const ( + noDataFound = "P0002" +) + +type dbError pgx.PgError + +func (err dbError) Error() string { + switch err.Code { + case noDataFound: + // Most recent line from stacktrace contains name of failed function + recent := strings.SplitN(err.Where, "\n", 1)[0] + switch { + case strings.Contains(recent, "isrsrange_points"): + return "No distance mark found for at least one given ISRS Location Code" + case strings.Contains(recent, "isrsrange_axis"): + return "No contiguous axis found between given ISRS Location Codes" + } + } + return "Unexpected database error: " + err.Message +}