From b320a5cdf7d6838a37bc0272f619dfbc031fc23e Mon Sep 17 00:00:00 2001 From: Muhammad Amir Ejaz <37077032+codingamir@users.noreply.github.com> Date: Fri, 19 May 2023 15:35:13 +0500 Subject: [PATCH] added 23503 pgerrcode support and updated the error conversion approach (#185) * added 23503 pgerrcode support and updated the error conversion approach * updated to meaningful variables names --- error_translator.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/error_translator.go b/error_translator.go index 285494c..af2498a 100644 --- a/error_translator.go +++ b/error_translator.go @@ -6,8 +6,9 @@ import ( "gorm.io/gorm" ) -var errCodes = map[string]string{ - "uniqueConstraint": "23505", +var errDesToGormErrs = map[string]error{ + "23505": gorm.ErrDuplicatedKey, + "23503": gorm.ErrForeignKeyViolated, } type ErrMessage struct { @@ -20,8 +21,9 @@ type ErrMessage struct { // Since currently gorm supporting both pgx and pg drivers, only checking for pgx PgError types is not enough for translating errors, so we have additional error json marshal fallback. func (dialector Dialector) Translate(err error) error { if pgErr, ok := err.(*pgconn.PgError); ok { - if pgErr.Code == errCodes["uniqueConstraint"] { - return gorm.ErrDuplicatedKey + gormErr, ok := errDesToGormErrs[pgErr.Code] + if ok { + return gormErr } return err }