view pkg/imports/errors.go @ 2672:b997e1fd1d3d import-overview-rework

Fixed warning SQL prefix for selection.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 14 Mar 2019 17:29:36 +0100
parents 6b34d0fb4498
children 1cb6676d1510
line wrap: on
line source

// 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
}