Skip to content

Commit

Permalink
refactor: translatorError flag added for backward compatibility (#6178)
Browse files Browse the repository at this point in the history
Co-authored-by: Saeid Saeidee <s.saeidee@sensysgatso.com>
  • Loading branch information
saeidee and Saeid Saeidee committed Mar 24, 2023
1 parent 5d1cdfe commit b444011
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 3 deletions.
8 changes: 6 additions & 2 deletions gorm.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ type Config struct {
QueryFields bool
// CreateBatchSize default create batch size
CreateBatchSize int
// TranslateError enabling error translation
TranslateError bool

// ClauseBuilders clause builder
ClauseBuilders map[string]clause.ClauseBuilder
Expand Down Expand Up @@ -348,8 +350,10 @@ func (db *DB) Callback() *callbacks {
// AddError add error to db
func (db *DB) AddError(err error) error {
if err != nil {
if errTranslator, ok := db.Dialector.(ErrorTranslator); ok {
err = errTranslator.Translate(err)
if db.Config.TranslateError {
if errTranslator, ok := db.Dialector.(ErrorTranslator); ok {
err = errTranslator.Translate(err)
}
}

if db.Error == nil {
Expand Down
12 changes: 11 additions & 1 deletion tests/error_translator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,20 @@ import (
)

func TestDialectorWithErrorTranslatorSupport(t *testing.T) {
// it shouldn't translate error when the TranslateError flag is false
translatedErr := errors.New("translated error")
untranslatedErr := errors.New("some random error")
db, _ := gorm.Open(tests.DummyDialector{TranslatedErr: translatedErr})

err := db.AddError(errors.New("some random error"))
err := db.AddError(untranslatedErr)
if errors.Is(err, translatedErr) {
t.Fatalf("expected err: %v got err: %v", translatedErr, err)
}

// it should translate error when the TranslateError flag is true
db, _ = gorm.Open(tests.DummyDialector{TranslatedErr: translatedErr}, &gorm.Config{TranslateError: true})

err = db.AddError(untranslatedErr)
if !errors.Is(err, translatedErr) {
t.Fatalf("expected err: %v got err: %v", translatedErr, err)
}
Expand Down

0 comments on commit b444011

Please sign in to comment.