From 4696385bf4acf50ce6dc751a0b199acb6de1689a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=9A=E5=A4=9A?= Date: Thu, 12 Sep 2019 11:21:12 +0800 Subject: [PATCH] update --- soft_delete.go | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 soft_delete.go diff --git a/soft_delete.go b/soft_delete.go new file mode 100644 index 00000000..0e50b50a --- /dev/null +++ b/soft_delete.go @@ -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)} +}