TestFirstOrCreateWithPrimaryKey, close #3192
This commit is contained in:
		
							parent
							
								
									7021db3655
								
							
						
					
					
						commit
						6ed697dd02
					
				| @ -70,16 +70,8 @@ func Create(config *Config) func(db *gorm.DB) { | |||||||
| 												} | 												} | ||||||
| 											} | 											} | ||||||
| 										} else { | 										} else { | ||||||
| 											allUpdated := int(db.RowsAffected) == db.Statement.ReflectValue.Len() |  | ||||||
| 											isZero := true |  | ||||||
| 
 |  | ||||||
| 											for i := 0; i < db.Statement.ReflectValue.Len(); i++ { | 											for i := 0; i < db.Statement.ReflectValue.Len(); i++ { | ||||||
| 
 | 												if _, isZero := db.Statement.Schema.PrioritizedPrimaryField.ValueOf(db.Statement.ReflectValue.Index(i)); isZero { | ||||||
| 												if !allUpdated { |  | ||||||
| 													_, isZero = db.Statement.Schema.PrioritizedPrimaryField.ValueOf(db.Statement.ReflectValue.Index(i)) |  | ||||||
| 												} |  | ||||||
| 
 |  | ||||||
| 												if isZero { |  | ||||||
| 													db.Statement.Schema.PrioritizedPrimaryField.Set(db.Statement.ReflectValue.Index(i), insertID) | 													db.Statement.Schema.PrioritizedPrimaryField.Set(db.Statement.ReflectValue.Index(i), insertID) | ||||||
| 													insertID++ | 													insertID++ | ||||||
| 												} | 												} | ||||||
|  | |||||||
| @ -352,3 +352,22 @@ func TestOmitWithCreate(t *testing.T) { | |||||||
| 
 | 
 | ||||||
| 	CheckUser(t, result2, user2) | 	CheckUser(t, result2, user2) | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | func TestFirstOrCreateWithPrimaryKey(t *testing.T) { | ||||||
|  | 	company := Company{ID: 100, Name: "company100_with_primarykey"} | ||||||
|  | 	DB.FirstOrCreate(&company) | ||||||
|  | 
 | ||||||
|  | 	if company.ID != 100 { | ||||||
|  | 		t.Errorf("invalid primary key after creating, got %v", company.ID) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	companies := []Company{ | ||||||
|  | 		{ID: 101, Name: "company101_with_primarykey"}, | ||||||
|  | 		{ID: 102, Name: "company102_with_primarykey"}, | ||||||
|  | 	} | ||||||
|  | 	DB.Create(&companies) | ||||||
|  | 
 | ||||||
|  | 	if companies[0].ID != 101 || companies[1].ID != 102 { | ||||||
|  | 		t.Errorf("invalid primary key after creating, got %v, %v", companies[0].ID, companies[1].ID) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | |||||||
| @ -6,10 +6,10 @@ require ( | |||||||
| 	github.com/google/uuid v1.1.1 | 	github.com/google/uuid v1.1.1 | ||||||
| 	github.com/jinzhu/now v1.1.1 | 	github.com/jinzhu/now v1.1.1 | ||||||
| 	github.com/lib/pq v1.6.0 | 	github.com/lib/pq v1.6.0 | ||||||
| 	gorm.io/driver/mysql v0.2.9 | 	gorm.io/driver/mysql v0.3.1 | ||||||
| 	gorm.io/driver/postgres v0.2.5 | 	gorm.io/driver/postgres v0.2.6 | ||||||
| 	gorm.io/driver/sqlite v1.0.8 | 	gorm.io/driver/sqlite v1.0.8 | ||||||
| 	gorm.io/driver/sqlserver v0.2.4 | 	gorm.io/driver/sqlserver v0.2.5 | ||||||
| 	gorm.io/gorm v0.2.19 | 	gorm.io/gorm v0.2.19 | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jinzhu
						Jinzhu