apigo.cc/go/tableDB
tableDB 是建立在 apigo.cc/go/db 基础上的更高层抽象工具库。提供对于动态表、数据权限隔离和 Hook 的生命周期追踪管理。
使用指南
1. 初始化与 Auth
package main
import (
"apigo.cc/go/tableDB"
"apigo.cc/go/log"
)
func main() {
app := tableDB.GetDB("sqlite://local.db", log.DefaultLogger)
// 在需要忽略权限的系统级后台执行时:
systemApp := app.Auth(tableDB.SystemUserID)
// 在特定的业务上下文执行时,将强制携带 creator 约束
userApp := app.Auth("user_12345")
}
2. DSL 动态表声明与同步
TableDB 提供底层隐藏表机制自动补全如 id 和 autoIndex,可用于初始化表结构。
schema := `
== UserGroup ==
users SD
name v50 U
age i
`
_ = app.SyncSchema(schema)
3. 生命周期 Hooks 订阅
通过注册 Hooks,我们可以在发生元数据变更或行更新时进行回调拦截:
app.Hooks.OnUpdatingRow = func(tableName string, row map[string]any) error {
if tableName == "users" {
row["modifiedAt"] = time.Now().Unix()
}
return nil
}
4. 动态表增删改查
底层调用与 go/db 使用习惯对齐,不同点是操作会被权限或 Hook 钩子影响:
// 设定数据,如 ID 缺省会自动生成 c10 ID
_ = userApp.Table("users").Set(map[string]any{"name": "Alice"})
// 读取
record, _ := userApp.Table("users").Get("u1xxxx")
// 统计
count, _ := userApp.Table("users").Count(map[string]any{"age >": 20})
Description
Languages
Go
100%