From 964d3112474443cb6bba29c03245675e630b5c39 Mon Sep 17 00:00:00 2001 From: black1552 Date: Fri, 13 Feb 2026 10:59:28 +0800 Subject: [PATCH] =?UTF-8?q?feat(utils):=20=E4=B8=BA=20CURD=20=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=B7=BB=E5=8A=A0=20HookHandler=20=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 Curd 结构体中添加 Hook 字段用于数据库操作钩子处理 - 为 DeletePri、DeleteWhere、Save、Update 和 UpdatePri 方法集成 Hook 支持 - 所有数据库操作方法现在通过 Hook 进行扩展处理 - 支持在数据库操作执行前后注入自定义逻辑 - 保持原有的数据库操作功能不变,仅增强扩展性 --- utils/curd.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/utils/curd.go b/utils/curd.go index 778a433..51cc191 100644 --- a/utils/curd.go +++ b/utils/curd.go @@ -24,7 +24,8 @@ type IDao interface { } type Curd[R any] struct { - Dao IDao + Dao IDao + Hook gdb.HookHandler } var pageInfo = []string{ @@ -229,11 +230,11 @@ func (c Curd[R]) Value(ctx ctx, where any, field any) (*gvar.Var, error) { return c.Dao.Ctx(ctx).Where(where).Fields(field).Value() } func (c Curd[R]) DeletePri(ctx ctx, primaryKey any) error { - _, err := c.Dao.Ctx(ctx).WherePri(primaryKey).Delete() + _, err := c.Dao.Ctx(ctx).Hook(c.Hook).WherePri(primaryKey).Delete() return err } func (c Curd[R]) DeleteWhere(ctx ctx, where any) error { - _, err := c.Dao.Ctx(ctx).Where(where).Delete() + _, err := c.Dao.Ctx(ctx).Hook(c.Hook).Where(where).Delete() return err } @@ -300,7 +301,7 @@ func (c Curd[R]) Count(ctx ctx, where any) (count int, err error) { } func (c Curd[R]) Save(ctx ctx, data any) (id int64, err error) { - result, err := c.Dao.Ctx(ctx).Save(data) + result, err := c.Dao.Ctx(ctx).Hook(c.Hook).Save(data) if err != nil { return } @@ -309,7 +310,7 @@ func (c Curd[R]) Save(ctx ctx, data any) (id int64, err error) { } func (c Curd[R]) Update(ctx ctx, where any, data any) (count int64, err error) { - result, err := c.Dao.Ctx(ctx).Where(where).Data(data).Update() + result, err := c.Dao.Ctx(ctx).Hook(c.Hook).Where(where).Data(data).Update() if err != nil { return } @@ -318,7 +319,7 @@ func (c Curd[R]) Update(ctx ctx, where any, data any) (count int64, err error) { } func (c Curd[R]) UpdatePri(ctx ctx, primaryKey any, data any) (count int64, err error) { - result, err := c.Dao.Ctx(ctx).WherePri(primaryKey).Data(data).Update() + result, err := c.Dao.Ctx(ctx).Hook(c.Hook).WherePri(primaryKey).Data(data).Update() if err != nil { return }