@go/docDB
docDB 是一个独立的高级文档存储引擎,基于 @go/tableDB 构建,提供版本管理、流式上传及生命周期钩子。
📦 安装
go get apigo.cc/go/docDB
🛠 核心功能
- 权限隔离:完全继承
tableDB的用户隔离体系。 - 版本管控:通过
SetDoc强制提升文档版本,SetMeta仅更新属性而不影响版本。 - 流式上传:支持
io.Reader接口,低内存占用处理大文件落盘。 - 事件驱动:提供
OnCreatedDoc,OnUpdatedDoc,OnRemoved钩子,方便集成搜索索引、异步处理等。 - 结构化目录:自动提取 Markdown 文档的目录树 (ToC)。
🚀 快速开始
初始化
import (
"apigo.cc/go/docDB"
"apigo.cc/go/tableDB"
)
// 创建 DocDB 实例
db := tableDB.GetDB("sqlite://docs.db", logger)
docStore := docDB.New(db, "./storage")
// 授权并获取 App
app := docStore.Auth("user_123")
存储文档
doc := &docDB.Document{
Path: "/projects/readme.md",
Title: "Getting Started",
TextContent: "# Hello World\n...",
BinaryContent: fileReader, // 可选,流式上传
}
// 保存文档 (版本提升)
err := app.SetDoc(doc)
更新元数据
// 仅更新标签,不提升版本
err := app.SetMeta(docID, map[string]any{
"Tags": "tutorial,go",
})
监听事件
docStore.OnCreatedDoc(func(doc *docDB.Document) {
fmt.Println("New doc created:", doc.ID)
// 可以在这里触发异步摘要生成或向量化
})
📝 注意事项
- 数据对齐:内部强制将
Document.ID对齐为tableDB约定的id字段。 - 无状态性:不包含具体业务逻辑,如摘要生成、全文搜索等,推荐通过事件钩子实现。
Description
Languages
Go
100%