40 lines
894 B
Go
40 lines
894 B
Go
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)}
|
|
}
|