This commit is contained in:
多多 2019-09-12 11:21:12 +08:00
parent e235f0d7e3
commit 4696385bf4
1 changed files with 39 additions and 0 deletions

39
soft_delete.go Normal file
View File

@ -0,0 +1,39 @@
package xorm
import (
"reflect"
"xorm.io/builder"
"xorm.io/core"
)
type SoftDelete interface {
getDeleteValue() interface{}
getSelectFilter(deleteField string) builder.Cond
setBeanConumenAttr(bean interface{}, col *core.Column, val interface{})
}
type DefaultSoftDeleteHandler struct {
}
func (h *DefaultSoftDeleteHandler) setBeanConumenAttr(bean interface{}, col *core.Column, val interface{}) {
t := val.(int64)
v, err := col.ValueOf(bean)
if err != nil {
return
}
if v.CanSet() {
switch v.Type().Kind() {
case reflect.Int, reflect.Int64, reflect.Int32:
v.SetInt(t)
case reflect.Uint, reflect.Uint64, reflect.Uint32:
v.SetUint(uint64(t))
}
}
}
func (h *DefaultSoftDeleteHandler) getDeleteValue() interface{} {
return int64(1)
}
func (h *DefaultSoftDeleteHandler) getSelectFilter(deleteField string) builder.Cond {
return builder.Eq{deleteField: int64(0)}
}