yay, update works
This commit is contained in:
		
							parent
							
								
									91ad8a0459
								
							
						
					
					
						commit
						f4f7e44199
					
				| @ -3,7 +3,6 @@ | ||||
| Yet Another ORM library for Go, aims for developer friendly | ||||
| 
 | ||||
| ## TODO | ||||
| * Update | ||||
| * Delete | ||||
| * Complex where query (= / > / < / <> / in) | ||||
| * Order | ||||
|  | ||||
							
								
								
									
										2
									
								
								model.go
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								model.go
									
									
									
									
									
								
							| @ -26,7 +26,7 @@ func (s *Orm) toModel(value interface{}) *Model { | ||||
| 
 | ||||
| func (m *Model) PrimaryKeyIsEmpty() bool { | ||||
| 	result := reflect.ValueOf(m.Data).Elem() | ||||
| 	return result.FieldByName(m.PrimaryKey()).Interface().(int64) == int64(0) | ||||
| 	return result.FieldByName(m.PrimaryKey()).Interface().(int64) == 0 | ||||
| } | ||||
| 
 | ||||
| func (m *Model) PrimaryKey() string { | ||||
|  | ||||
							
								
								
									
										28
									
								
								orm_test.go
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								orm_test.go
									
									
									
									
									
								
							| @ -39,6 +39,34 @@ func TestSaveAndFind(t *testing.T) { | ||||
| 	db.Find(&users) | ||||
| } | ||||
| 
 | ||||
| func TestUpdate(t *testing.T) { | ||||
| 	name := "update" | ||||
| 	user := User{Name: name} | ||||
| 	db.Save(&user) | ||||
| 
 | ||||
| 	user_id := user.Id | ||||
| 	if user_id == 0 { | ||||
| 		t.Errorf("User Id should exist after create") | ||||
| 	} | ||||
| 
 | ||||
| 	orm := db.Where("name = ?", "update").First(&User{}) | ||||
| 	if orm.Error != nil { | ||||
| 		t.Errorf("No error should raise when looking for a exiting user") | ||||
| 	} | ||||
| 
 | ||||
| 	user.Name = "update2" | ||||
| 	db.Save(&user) | ||||
| 	orm = db.Where("name = ?", "update").First(&User{}) | ||||
| 	if orm.Error == nil { | ||||
| 		t.Errorf("Should raise error when looking for a existing user with an outdated name") | ||||
| 	} | ||||
| 
 | ||||
| 	orm = db.Where("name = ?", "update2").First(&User{}) | ||||
| 	if orm.Error != nil { | ||||
| 		t.Errorf("Shouldn't raise error when looking for a existing user with the new name") | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func TestWhere(t *testing.T) { | ||||
| 	name := "where" | ||||
| 	db.Save(&User{Name: name}) | ||||
|  | ||||
							
								
								
									
										15
									
								
								sql.go
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								sql.go
									
									
									
									
									
								
							| @ -77,7 +77,7 @@ func (s *Orm) createSql(value interface{}) { | ||||
| 	s.Sql = fmt.Sprintf( | ||||
| 		"INSERT INTO \"%v\" (%v) VALUES (%v) %v", | ||||
| 		s.TableName, | ||||
| 		strings.Join(quoteMap(columns), ","), | ||||
| 		strings.Join(s.quoteMap(columns), ","), | ||||
| 		valuesToBinVar(values), | ||||
| 		s.Model.ReturningStr(), | ||||
| 	) | ||||
| @ -99,10 +99,23 @@ func (s *Orm) create(value interface{}) { | ||||
| } | ||||
| 
 | ||||
| func (s *Orm) updateSql(value interface{}) { | ||||
| 	columns, values := s.Model.ColumnsAndValues() | ||||
| 	var sets []string | ||||
| 	for index, column := range columns { | ||||
| 		s.SqlVars = append(s.SqlVars, values[index]) | ||||
| 		sets = append(sets, fmt.Sprintf("%v = $%d", s.quote(column), len(s.SqlVars))) | ||||
| 	} | ||||
| 
 | ||||
| 	s.Sql = fmt.Sprintf( | ||||
| 		"UPDATE %v SET %v", | ||||
| 		s.TableName, | ||||
| 		strings.Join(sets, ", "), | ||||
| 	) | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func (s *Orm) update(value interface{}) { | ||||
| 	s.Exec() | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										8
									
								
								utils.go
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								utils.go
									
									
									
									
									
								
							| @ -16,9 +16,13 @@ func valuesToBinVar(values []interface{}) string { | ||||
| 	return strings.Join(sqls, ",") | ||||
| } | ||||
| 
 | ||||
| func quoteMap(values []string) (results []string) { | ||||
| func (s *Orm) quote(value string) string { | ||||
| 	return "\"" + value + "\"" | ||||
| } | ||||
| 
 | ||||
| func (s *Orm) quoteMap(values []string) (results []string) { | ||||
| 	for _, value := range values { | ||||
| 		results = append(results, "\""+value+"\"") | ||||
| 		results = append(results, s.quote(value)) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jinzhu
						Jinzhu