refactor: translatorError flag added for backward compatibility (#6178)
Co-authored-by: Saeid Saeidee <s.saeidee@sensysgatso.com>
This commit is contained in:
		
							parent
							
								
									5d1cdfef2e
								
							
						
					
					
						commit
						b444011d09
					
				
							
								
								
									
										8
									
								
								gorm.go
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								gorm.go
									
									
									
									
									
								
							| @ -47,6 +47,8 @@ type Config struct { | |||||||
| 	QueryFields bool | 	QueryFields bool | ||||||
| 	// CreateBatchSize default create batch size
 | 	// CreateBatchSize default create batch size
 | ||||||
| 	CreateBatchSize int | 	CreateBatchSize int | ||||||
|  | 	// TranslateError enabling error translation
 | ||||||
|  | 	TranslateError bool | ||||||
| 
 | 
 | ||||||
| 	// ClauseBuilders clause builder
 | 	// ClauseBuilders clause builder
 | ||||||
| 	ClauseBuilders map[string]clause.ClauseBuilder | 	ClauseBuilders map[string]clause.ClauseBuilder | ||||||
| @ -348,8 +350,10 @@ func (db *DB) Callback() *callbacks { | |||||||
| // AddError add error to db
 | // AddError add error to db
 | ||||||
| func (db *DB) AddError(err error) error { | func (db *DB) AddError(err error) error { | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		if errTranslator, ok := db.Dialector.(ErrorTranslator); ok { | 		if db.Config.TranslateError { | ||||||
| 			err = errTranslator.Translate(err) | 			if errTranslator, ok := db.Dialector.(ErrorTranslator); ok { | ||||||
|  | 				err = errTranslator.Translate(err) | ||||||
|  | 			} | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		if db.Error == nil { | 		if db.Error == nil { | ||||||
|  | |||||||
| @ -9,10 +9,20 @@ import ( | |||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| func TestDialectorWithErrorTranslatorSupport(t *testing.T) { | func TestDialectorWithErrorTranslatorSupport(t *testing.T) { | ||||||
|  | 	// it shouldn't translate error when the TranslateError flag is false
 | ||||||
| 	translatedErr := errors.New("translated error") | 	translatedErr := errors.New("translated error") | ||||||
|  | 	untranslatedErr := errors.New("some random error") | ||||||
| 	db, _ := gorm.Open(tests.DummyDialector{TranslatedErr: translatedErr}) | 	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) { | 	if !errors.Is(err, translatedErr) { | ||||||
| 		t.Fatalf("expected err: %v got err: %v", translatedErr, err) | 		t.Fatalf("expected err: %v got err: %v", translatedErr, err) | ||||||
| 	} | 	} | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Saeid Kanishka
						Saeid Kanishka