From b3c309ac0b774b0bb0afea142dc3c6f71c5076fd Mon Sep 17 00:00:00 2001 From: Ali <50074052+alirezaarzehgar@users.noreply.github.com> Date: Tue, 10 Oct 2023 11:02:30 +0330 Subject: [PATCH] Feature sqlstate support (#215) * feat: add error code for undefined column * Add gorm.ErrInvalidField error for 42703 SQLSTATE. * Add test for new supported error code. Signed-off-by: alireza * refactor: remove unnecessary json struct tags new json fields names was same as struct field names. It's default behavior of json package and we don't need them. Signed-off-by: alireza --------- Signed-off-by: alireza --- error_translator.go | 7 ++++--- error_translator_test.go | 8 +++++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/error_translator.go b/error_translator.go index c80b913..9c0ef25 100644 --- a/error_translator.go +++ b/error_translator.go @@ -11,12 +11,13 @@ import ( var errCodes = map[string]error{ "23505": gorm.ErrDuplicatedKey, "23503": gorm.ErrForeignKeyViolated, + "42703": gorm.ErrInvalidField, } type ErrMessage struct { - Code string `json:"Code"` - Severity string `json:"Severity"` - Message string `json:"Message"` + Code string + Severity string + Message string } // Translate it will translate the error to native gorm errors. diff --git a/error_translator_test.go b/error_translator_test.go index 130d41b..612cef1 100644 --- a/error_translator_test.go +++ b/error_translator_test.go @@ -2,9 +2,10 @@ package postgres import ( "errors" + "testing" + "github.com/jackc/pgx/v5/pgconn" "gorm.io/gorm" - "testing" ) func TestDialector_Translate(t *testing.T) { @@ -30,6 +31,11 @@ func TestDialector_Translate(t *testing.T) { args: args{err: &pgconn.PgError{Code: "23503"}}, want: gorm.ErrForeignKeyViolated, }, + { + name: "it should return gorm.ErrInvalidField error if the status code is 42703", + args: args{err: &pgconn.PgError{Code: "42703"}}, + want: gorm.ErrInvalidField, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) {