forked from mirror/gorm
Fix error when chaining empty where conditions
This commit is contained in:
parent
0219fb1cc0
commit
045b4d6d2a
|
@ -229,6 +229,25 @@ func TestSearchWithMap(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestSearchWithEmptyChain(t *testing.T) {
|
||||
user1 := User{Name: "ChainSearchUser1", Age: 1, Birthday: now.MustParse("2000-1-1")}
|
||||
user2 := User{Name: "ChainearchUser2", Age: 10, Birthday: now.MustParse("2010-1-1")}
|
||||
user3 := User{Name: "ChainearchUser3", Age: 20, Birthday: now.MustParse("2020-1-1")}
|
||||
DB.Save(&user1).Save(&user2).Save(&user3)
|
||||
|
||||
if DB.Where("").Where("").First(&User{}).Error != nil {
|
||||
t.Errorf("Should not raise any error if searching with empty strings")
|
||||
}
|
||||
|
||||
if DB.Where(&User{}).Where("name = ?", user1.Name).First(&User{}).Error != nil {
|
||||
t.Errorf("Should not raise any error if searching with empty struct")
|
||||
}
|
||||
|
||||
if DB.Where(map[string]interface{}{}).Where("name = ?", user1.Name).First(&User{}).Error != nil {
|
||||
t.Errorf("Should not raise any error if searching with empty map")
|
||||
}
|
||||
}
|
||||
|
||||
func TestSelect(t *testing.T) {
|
||||
user1 := User{Name: "SelectUser1"}
|
||||
DB.Save(&user1)
|
||||
|
|
|
@ -176,15 +176,21 @@ func (scope *Scope) whereSql() (sql string) {
|
|||
}
|
||||
|
||||
for _, clause := range scope.Search.WhereConditions {
|
||||
andConditions = append(andConditions, scope.buildWhereCondition(clause))
|
||||
if sql := scope.buildWhereCondition(clause); sql != "" {
|
||||
andConditions = append(andConditions, sql)
|
||||
}
|
||||
}
|
||||
|
||||
for _, clause := range scope.Search.OrConditions {
|
||||
orConditions = append(orConditions, scope.buildWhereCondition(clause))
|
||||
if sql := scope.buildWhereCondition(clause); sql != "" {
|
||||
orConditions = append(orConditions, sql)
|
||||
}
|
||||
}
|
||||
|
||||
for _, clause := range scope.Search.NotConditions {
|
||||
andConditions = append(andConditions, scope.buildNotCondition(clause))
|
||||
if sql := scope.buildNotCondition(clause); sql != "" {
|
||||
andConditions = append(andConditions, sql)
|
||||
}
|
||||
}
|
||||
|
||||
orSql := strings.Join(orConditions, " OR ")
|
||||
|
|
Loading…
Reference in New Issue