orm #276
This commit is contained in:
		
							parent
							
								
									558738ade8
								
							
						
					
					
						commit
						167ad203cb
					
				
							
								
								
									
										30
									
								
								orm/db.go
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								orm/db.go
									
									
									
									
									
								
							| @ -705,8 +705,14 @@ func (d *dbBase) ReadBatch(q dbQuerier, qs *querySet, mi *modelInfo, cond *Condi | ||||
| 				ind.Set(mind) | ||||
| 			} else { | ||||
| 				if cnt == 0 { | ||||
| 					// you can use a empty & caped container list | ||||
| 					// orm will not replace it | ||||
| 					if ind.Len() != 0 { | ||||
| 						// if container is not empty | ||||
| 						// create a new one | ||||
| 						slice = reflect.New(ind.Type()).Elem() | ||||
| 					} | ||||
| 				} | ||||
| 
 | ||||
| 				if isPtr { | ||||
| 					slice = reflect.Append(slice, mind.Addr()) | ||||
| @ -718,8 +724,16 @@ func (d *dbBase) ReadBatch(q dbQuerier, qs *querySet, mi *modelInfo, cond *Condi | ||||
| 		cnt++ | ||||
| 	} | ||||
| 
 | ||||
| 	if one == false && cnt > 0 { | ||||
| 	if one == false { | ||||
| 		if cnt > 0 { | ||||
| 			ind.Set(slice) | ||||
| 		} else { | ||||
| 			// when a result is empty and container is nil | ||||
| 			// to set a empty container | ||||
| 			if ind.IsNil() { | ||||
| 				ind.Set(reflect.MakeSlice(ind.Type(), 0, 0)) | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	return cnt, nil | ||||
| @ -1058,12 +1072,24 @@ func (d *dbBase) ReadValues(q dbQuerier, qs *querySet, mi *modelInfo, cond *Cond | ||||
| 	) | ||||
| 
 | ||||
| 	typ := 0 | ||||
| 	switch container.(type) { | ||||
| 	switch v := container.(type) { | ||||
| 	case *[]Params: | ||||
| 		d := *v | ||||
| 		if len(d) == 0 { | ||||
| 			maps = d | ||||
| 		} | ||||
| 		typ = 1 | ||||
| 	case *[]ParamsList: | ||||
| 		d := *v | ||||
| 		if len(d) == 0 { | ||||
| 			lists = d | ||||
| 		} | ||||
| 		typ = 2 | ||||
| 	case *ParamsList: | ||||
| 		d := *v | ||||
| 		if len(d) == 0 { | ||||
| 			list = d | ||||
| 		} | ||||
| 		typ = 3 | ||||
| 	default: | ||||
| 		panic(fmt.Errorf("unsupport read values type `%T`", container)) | ||||
|  | ||||
| @ -696,8 +696,13 @@ func TestAll(t *testing.T) { | ||||
| 
 | ||||
| 	qs = dORM.QueryTable("user") | ||||
| 	num, err = qs.Filter("user_name", "nothing").All(&users) | ||||
| 	throwFail(t, err) | ||||
| 	throwFail(t, AssertIs(num, 0)) | ||||
| 	throwFailNow(t, err) | ||||
| 	throwFailNow(t, AssertIs(num, 0)) | ||||
| 
 | ||||
| 	var users3 []*User | ||||
| 	qs = dORM.QueryTable("user") | ||||
| 	num, err = qs.Filter("user_name", "nothing").All(&users3) | ||||
| 	throwFailNow(t, AssertIs(users3 == nil, false)) | ||||
| } | ||||
| 
 | ||||
| func TestOne(t *testing.T) { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user