feat: Hooks 新增 UseTx,Before/After 改用类型化的 HookError
之前 Hooks.Before/After 返回裸 error,调用方没法区分"钩子本身失败"和"SQL 执行失败"。改成返回 *HookError(包一层 exec.HookError),配合 errors.As 能精确识别。 同时给 Hooks 加一个 UseTx(dataset) (QueryFactory, error) 方法,在 Before 之前调用,允许钩子在写操作真正执行前替换掉默认连接(比如需要自动开事务包住 写操作和写后回调的场景),返回 nil, nil 表示沿用默认连接。目前只有 InsertDataset/UpdateDataset/DeleteDataset 会调用 UseTx,SelectDataset (只读)不需要。
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
package db
|
||||
|
||||
import "git.fsdpf.net/go/db/exec"
|
||||
|
||||
// HookError 是 Hooks.Before/After 失败时的包装错误:Before 失败时 SQL 还未执行,After 失败时
|
||||
// SQL 语句本身已经执行成功、失败的是钩子本身。调用方可以用 errors.As 把它和真正的 SQL 执行失败区分开。
|
||||
type HookError = exec.HookError
|
||||
Reference in New Issue
Block a user