adds PropagateUnscoped to Session and sets it accordingly
This commit is contained in:
		
							parent
							
								
									aca4b77fcd
								
							
						
					
					
						commit
						abb6d3ed5d
					
				
							
								
								
									
										5
									
								
								gorm.go
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								gorm.go
									
									
									
									
									
								
							| @ -112,6 +112,7 @@ type Session struct { | ||||
| 	DisableNestedTransaction bool | ||||
| 	AllowGlobalUpdate        bool | ||||
| 	FullSaveAssociations     bool | ||||
| 	PropagateUnscoped        bool | ||||
| 	QueryFields              bool | ||||
| 	Context                  context.Context | ||||
| 	Logger                   logger.Interface | ||||
| @ -243,6 +244,10 @@ func (db *DB) Session(config *Session) *DB { | ||||
| 		txConfig.FullSaveAssociations = true | ||||
| 	} | ||||
| 
 | ||||
| 	if config.PropagateUnscoped { | ||||
| 		txConfig.PropagateUnscoped = true | ||||
| 	} | ||||
| 
 | ||||
| 	if config.Context != nil || config.PrepareStmt || config.SkipHooks { | ||||
| 		tx.Statement = tx.Statement.clone() | ||||
| 		tx.Statement.DB = tx | ||||
|  | ||||
| @ -2,6 +2,8 @@ package tests_test | ||||
| 
 | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"log" | ||||
| 	"os" | ||||
| 	"reflect" | ||||
| 	"strings" | ||||
| 	"testing" | ||||
| @ -586,21 +588,24 @@ func (p *Product6) BeforeDelete(tx *gorm.DB) error { | ||||
| } | ||||
| 
 | ||||
| func TestPropagateUnscoped(t *testing.T) { | ||||
| 	DB.Migrator().DropTable(&Product6{}, &ProductItem2{}) | ||||
| 	DB.AutoMigrate(&Product6{}, &ProductItem2{}) | ||||
| 	_DB, err := OpenTestConnection(&gorm.Config{ | ||||
| 		PropagateUnscoped: true, | ||||
| 	}) | ||||
| 	if err != nil { | ||||
| 		log.Printf("failed to connect database, got error %v", err) | ||||
| 		os.Exit(1) | ||||
| 	} | ||||
| 
 | ||||
| 	_DB.Migrator().DropTable(&Product6{}, &ProductItem2{}) | ||||
| 	_DB.AutoMigrate(&Product6{}, &ProductItem2{}) | ||||
| 
 | ||||
| 	p := Product6{ | ||||
| 		Name: "unique_code", | ||||
| 		Item: &ProductItem2{}, | ||||
| 	} | ||||
| 	DB.Model(&Product6{}).Create(&p) | ||||
| 	_DB.Model(&Product6{}).Create(&p) | ||||
| 
 | ||||
| 	DB.PropagateUnscoped = true | ||||
| 	defer func() { | ||||
| 		DB.PropagateUnscoped = false | ||||
| 	}() | ||||
| 
 | ||||
| 	if err := DB.Unscoped().Delete(&p).Error; err != nil { | ||||
| 	if err := _DB.Unscoped().Delete(&p).Error; err != nil { | ||||
| 		t.Fatalf("unscoped did not propagate") | ||||
| 	} | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Sérgio Almeida
						Sérgio Almeida