Documentation
¶
Overview ¶
Package store 台面持久层:默认 SQLite(desk.db);可切换 MySQL(表前缀隔离,供嵌入方同实例共库)。 项目数据用 project_id 隔离;认账记忆(正文 / LESSONS)仍可在文件系统。
Index ¶
- Constants
- func AdaptSQL(q string) string
- func CloseAll()
- func ConcatExpr(column, placeholder string) string
- func Configure(c Config)
- func DriverName() string
- func EmbedDataDir() string
- func EnsureProject(db *sql.DB, root string) error
- func InsertIgnore(table string, cols []string) string
- func IsMySQL() bool
- func JSONExtract(column, path string) string
- func LoadRunTrail(db *sql.DB, pid, runID string) ([]byte, error)
- func MetaGet(db *sql.DB, projectID, key string) (string, error)
- func MetaSet(db *sql.DB, projectID, key, value string) error
- func Open() (*sql.DB, error)
- func OpenAt(dir string) (*sql.DB, error)
- func OpenGlobal() (*sql.DB, error)
- func OpenGlobalAt(dir string) (*sql.DB, error)
- func OpenProject(root string) (*sql.DB, error)
- func OpenProjectAt(dir, root string) (*sql.DB, error)
- func Path() (string, error)
- func ProjectID(root string) string
- func ProjectPath(root string) string
- func PromoteMetaBlobs(db *sql.DB) error
- func R(q string) string
- func ReplaceRunEvents(tx *sql.Tx, pid, runID, trailJSON string, createdAtMs int64) error
- func ResetCacheForTest()
- func RewriteSQL(q string) string
- func SetEmbedDataDir(dir string)
- func T(logical string) string
- func TablePrefix() string
- func Upsert(table string, cols, conflict, updates []string) string
- type Config
Constants ¶
const ( DriverSQLite = "sqlite" DriverMySQL = "mysql" )
Driver 名称(通用,不含业务含义)。
const CurrentSchemaVersion = 25
CurrentSchemaVersion 当前统一库版本;升级走 numbered migrations。
const (
FileName = "desk.db"
)
Variables ¶
This section is empty.
Functions ¶
func ConcatExpr ¶
ConcatExpr 列与占位符拼接:sqlite content||? ;mysql CONCAT(content, ?)。
func Configure ¶
func Configure(c Config)
Configure 设置进程内默认台面配置(Open / OpenProject 生效)。 传零值 Config 可复位为 sqlite 默认。
func InsertIgnore ¶
InsertIgnore 生成 INSERT OR IGNORE / INSERT IGNORE。
func JSONExtract ¶
JSONExtract 取 JSON 路径表达式(用于 WHERE/SELECT)。
func LoadRunTrail ¶
LoadRunTrail 按 seq 拼回 trail JSON 数组字节。
func OpenProject ¶
OpenProject 打开唯一库并为该项目完成迁移(旧项目 desk.db / JSON;mysql 仅 EnsureProject)。
func OpenProjectAt ¶
OpenProjectAt 测试:库在 dir(sqlite);mysql 忽略 dir。
func ProjectPath ¶
ProjectPath 旧项目旁路库路径(仅迁移用):root/.ningharness/desk.db。
func PromoteMetaBlobs ¶
PromoteMetaBlobs 项目迁入后兜底(legacy/json 可能又写入 meta blob)。
func ReplaceRunEvents ¶
ReplaceRunEvents 用 trail JSON 数组覆写某 run 的事件行(供 task.Save / 迁移共用)。
func ResetCacheForTest ¶
func ResetCacheForTest()
func SetEmbedDataDir ¶
func SetEmbedDataDir(dir string)
SetEmbedDataDir 嵌入方指定 desk.db 目录;空则清除。 OpenProject / history / session 将与此目录对齐,避免误写家目录默认库。
Types ¶
type Config ¶
type Config struct {
// Driver sqlite(默认)| mysql
Driver string
// DSN mysql 连接串;Driver=mysql 且 DB==nil 时使用。
DSN string
// DB 可选:由宿主注入的连接池(如产品已打开的 *sql.DB)。
// 注入时 harness 不 Close 该池。
DB *sql.DB
// TablePrefix 表前缀。mysql 默认 "nh_";sqlite 默认空(保持 desk.db 兼容)。
TablePrefix string
// DataDir sqlite 文件目录;mysql 忽略。
DataDir string
// ProjectKey 逻辑项目键;非空时覆盖 ProjectID(root) 的路径算法(嵌入多实例同库用)。
ProjectKey string
}
Config 台面库配置。由嵌入方在 Open 前通过 Configure / OpenWith 注入。 禁止出现产品/业务字段;同实例共库时用 TablePrefix 隔离。