161 lines
3.5 KiB
Go
161 lines
3.5 KiB
Go
package ydb
|
|
|
|
import (
|
|
"database/sql"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"xorm.io/builder"
|
|
"xorm.io/xorm"
|
|
)
|
|
|
|
func TestDelete(t *testing.T) {
|
|
assert.NoError(t, PrepareScheme(&Users{}))
|
|
|
|
engine, err := enginePool.GetDataQueryEngine()
|
|
assert.NoError(t, err)
|
|
|
|
users := getUsersData()
|
|
|
|
_, err = engine.Transaction(func(session *xorm.Session) (interface{}, error) {
|
|
_, err = session.Insert(users)
|
|
return nil, err
|
|
})
|
|
assert.NoError(t, err)
|
|
|
|
_, err = engine.Transaction(func(session *xorm.Session) (interface{}, error) {
|
|
_, err = session.Delete(&Users{
|
|
Account: Account{
|
|
UserID: sql.NullInt64{Int64: 1, Valid: true},
|
|
},
|
|
})
|
|
return nil, err
|
|
})
|
|
assert.NoError(t, err)
|
|
|
|
user := Users{}
|
|
has, err := engine.Where("user_id = ?", sql.NullInt64{Int64: 1, Valid: true}).Get(&user)
|
|
assert.NoError(t, err)
|
|
assert.False(t, has)
|
|
|
|
_, err = engine.Transaction(func(session *xorm.Session) (interface{}, error) {
|
|
_, err = session.Table((&Users{}).TableName()).Where(builder.Between{
|
|
Col: "user_id",
|
|
LessVal: sql.NullInt64{Int64: 10, Valid: true},
|
|
MoreVal: sql.NullInt64{Int64: 15, Valid: true},
|
|
}).Delete()
|
|
return nil, err
|
|
})
|
|
assert.NoError(t, err)
|
|
|
|
cnt, err := engine.Table(&Users{}).Where(builder.Between{
|
|
Col: "user_id",
|
|
LessVal: sql.NullInt64{Int64: 10, Valid: true},
|
|
MoreVal: sql.NullInt64{Int64: 15, Valid: true},
|
|
}).Count()
|
|
assert.NoError(t, err)
|
|
assert.EqualValues(t, 0, cnt)
|
|
|
|
has, err = engine.Get(&Users{
|
|
Account: Account{
|
|
UserID: sql.NullInt64{Int64: 0, Valid: true},
|
|
},
|
|
})
|
|
assert.NoError(t, err)
|
|
assert.True(t, has)
|
|
}
|
|
|
|
// FIXME: failed on get `deleted` field, unknown problem that return argument
|
|
// of time.Time type as string type.
|
|
/* type UsersDeleted struct {
|
|
Name string `xorm:"'name'"`
|
|
Age uint32 `xorm:"'age'"`
|
|
Deleted time.Time `xorm:"deleted"`
|
|
Account `xorm:"extends"`
|
|
}
|
|
|
|
func (*UsersDeleted) TableName() string {
|
|
return "users"
|
|
}
|
|
|
|
// !datbeohbbh! not supported
|
|
func TestDeleted(t *testing.T) {
|
|
assert.NoError(t, PrepareScheme(&Users{}))
|
|
|
|
engine, err := enginePool.GetScriptQueryEngine()
|
|
assert.NoError(t, err)
|
|
|
|
assert.NoError(t, engine.Sync(&UsersDeleted{}))
|
|
|
|
user := UsersDeleted{
|
|
Name: "datbeohbbh",
|
|
Age: uint32(22),
|
|
Account: Account{
|
|
UserID: sql.NullInt64{Int64: 1, Valid: true},
|
|
Number: uuid.NewString(),
|
|
},
|
|
}
|
|
|
|
session := engine.NewSession()
|
|
defer session.Close()
|
|
|
|
_, err = session.Insert(&user)
|
|
assert.NoError(t, err)
|
|
|
|
ret := UsersDeleted{}
|
|
has, err := session.Get(&UsersDeleted{
|
|
Account: Account{
|
|
UserID: sql.NullInt64{Int64: 1, Valid: true},
|
|
},
|
|
})
|
|
assert.NoError(t, err)
|
|
assert.True(t, has)
|
|
|
|
_, err = session.Delete(&UsersDeleted{
|
|
Account: Account{
|
|
UserID: sql.NullInt64{Int64: 1, Valid: true},
|
|
},
|
|
})
|
|
assert.NoError(t, err)
|
|
|
|
ret = UsersDeleted{}
|
|
has, err = session.Get(&UsersDeleted{
|
|
Account: Account{
|
|
UserID: sql.NullInt64{Int64: 1, Valid: true},
|
|
},
|
|
})
|
|
assert.NoError(t, err)
|
|
assert.False(t, has)
|
|
|
|
_, err = session.Delete(&UsersDeleted{
|
|
Account: Account{
|
|
UserID: sql.NullInt64{Int64: 1, Valid: true},
|
|
},
|
|
})
|
|
assert.NoError(t, err)
|
|
|
|
ret = UsersDeleted{}
|
|
has, err = session.
|
|
Unscoped().
|
|
Where("user_id = ?", sql.NullInt64{Int64: 1, Valid: true}).
|
|
Get(&ret)
|
|
assert.NoError(t, err)
|
|
assert.True(t, has)
|
|
|
|
_, err = session.
|
|
Table("users").
|
|
Unscoped().
|
|
Where("user_id = ?", sql.NullInt64{Int64: 1, Valid: true}).
|
|
Delete()
|
|
assert.NoError(t, err)
|
|
|
|
ret = UsersDeleted{}
|
|
has, err = session.
|
|
Unscoped().
|
|
Where("user_id = ?", sql.NullInt64{Int64: 1, Valid: true}).
|
|
Get(&ret)
|
|
assert.NoError(t, err)
|
|
assert.False(t, has)
|
|
}
|
|
*/
|