fix bug when query map condtion with no quote #1449
|
@ -618,3 +618,28 @@ func TestCustomTypes(t *testing.T) {
|
|||
assert.True(t, has)
|
||||
assert.EqualValues(t, 32, age)
|
||||
}
|
||||
|
||||
func TestGetViaMapCond(t *testing.T) {
|
||||
type GetViaMapCond struct {
|
||||
Id int64
|
||||
Platform int
|
||||
Index int
|
||||
}
|
||||
|
||||
assert.NoError(t, prepareEngine())
|
||||
assertSync(t, new(GetViaMapCond))
|
||||
|
||||
var (
|
||||
r GetViaMapCond
|
||||
platformStr = colMapper.Obj2Table("Platform")
|
||||
indexStr = colMapper.Obj2Table("Index")
|
||||
query = map[string]interface{}{
|
||||
platformStr: 1,
|
||||
indexStr: 1,
|
||||
}
|
||||
)
|
||||
|
||||
has, err := testEngine.Where(query).Get(&r)
|
||||
assert.NoError(t, err)
|
||||
assert.False(t, has)
|
||||
}
|
||||
|
|
|
@ -149,8 +149,12 @@ func (statement *Statement) And(query interface{}, args ...interface{}) *Stateme
|
|||
cond := builder.Expr(query.(string), args...)
|
||||
statement.cond = statement.cond.And(cond)
|
||||
case map[string]interface{}:
|
||||
cond := builder.Eq(query.(map[string]interface{}))
|
||||
statement.cond = statement.cond.And(cond)
|
||||
queryMap := query.(map[string]interface{})
|
||||
newMap := make(map[string]interface{})
|
||||
for k, v := range queryMap {
|
||||
newMap[statement.Engine.Quote(k)] = v
|
||||
}
|
||||
statement.cond = statement.cond.And(builder.Eq(newMap))
|
||||
case builder.Cond:
|
||||
cond := query.(builder.Cond)
|
||||
statement.cond = statement.cond.And(cond)
|
||||
|
|
Loading…
Reference in New Issue
Block a user