跳转到内容

desktop/src-tauri/crates/core/src/storage/mod.rs

第 1 条注释,第 1 行

desktop/src-tauri/crates/core/src/storage/mod.rs:1

//! SQLite 持久化:单写者连接、WAL、synchronous=FULL、有界 busy_timeout、

第 2 条注释,第 2 行

desktop/src-tauri/crates/core/src/storage/mod.rs:2

//! 检查 schema 版本,不自动迁移;数据库规则见 architecture.md#database 和数据规范。

第 3 条注释,第 12 行

desktop/src-tauri/crates/core/src/storage/mod.rs:12

/// 默认 busy_timeout:有界,避免长读者/写者死等。

第 4 条注释,第 15 行

desktop/src-tauri/crates/core/src/storage/mod.rs:15

// SQLite 内置 lower/NOCASE 仅处理 ASCII;SQL 筛选和 Rust 分组

第 5 条注释,第 16 行

desktop/src-tauri/crates/core/src/storage/mod.rs:16

// 使用相同的 Unicode 小写规则,历史行也遵循该规则。

第 6 条注释,第 39 行

desktop/src-tauri/crates/core/src/storage/mod.rs:39

/// 本程序支持的最新 schema 版本;None 表示 [`schema::SCHEMA_VERSION`]。

第 7 条注释,第 52 行

desktop/src-tauri/crates/core/src/storage/mod.rs:52

/// 单写者存储句柄。

第 8 条注释,第 66 行

desktop/src-tauri/crates/core/src/storage/mod.rs:66

/// 打开或创建数据库,设置 pragmas 并检查或创建所需 schema;

第 9 条注释,第 67 行

desktop/src-tauri/crates/core/src/storage/mod.rs:67

/// 把上次进程遗留的 running 作业标记为 interrupted。

第 10 条注释,第 86 行

desktop/src-tauri/crates/core/src/storage/mod.rs:86

/// 只读连接(architecture.md:一个后台写者、少量只读连接)。

第 11 条注释,第 87 行

desktop/src-tauri/crates/core/src/storage/mod.rs:87

/// 不执行迁移、不写任何 pragma 持久化设置;WAL 库上可与写者并发。

第 12 条注释,第 88 行

desktop/src-tauri/crates/core/src/storage/mod.rs:88

/// 库不存在或无读权限时报错(调用方显示空态/错误,不回退到建新库)。

第 13 条注释,第 108 行

desktop/src-tauri/crates/core/src/storage/mod.rs:108

// 预发布阶段约定(当前设计):不做逐版本迁移。

第 14 条注释,第 109 行

desktop/src-tauri/crates/core/src/storage/mod.rs:109

// 版本不匹配 ⇒ 报错让应用层提示"删除重建或退出"。

第 15 条注释,第 110 行

desktop/src-tauri/crates/core/src/storage/mod.rs:110

// user_version=0 的新数据库直接创建完整 schema。

第 16 条注释,第 112 行

desktop/src-tauri/crates/core/src/storage/mod.rs:112

// 检查 settings 表,区分新数据库与未记录版本的旧数据库。

第 17 条注释,第 119 行

desktop/src-tauri/crates/core/src/storage/mod.rs:119

// 全新库:一步建表。

第 18 条注释,第 123 行

desktop/src-tauri/crates/core/src/storage/mod.rs:123

// 已有 settings 表但无版本号的旧数据库要求重建。

第 19 条注释,第 130 行

desktop/src-tauri/crates/core/src/storage/mod.rs:130

// 预发布阶段:任何版本差异都要求重建(不尝试迁移)。

第 20 条注释,第 138 行

desktop/src-tauri/crates/core/src/storage/mod.rs:138

// journal_mode 是持久化设置;内存库返回 memory,可忽略其结果差异。

第 21 条注释,第 143 行

desktop/src-tauri/crates/core/src/storage/mod.rs:143

// 这些可选查询加速索引不改变 schema 版本。

第 22 条注释,第 144 行

desktop/src-tauri/crates/core/src/storage/mod.rs:144

// 部分索引避免为少量覆盖缺口反复全表扫描。

第 23 条注释,第 165 行

desktop/src-tauri/crates/core/src/storage/mod.rs:165

/// 仅清除可选查询缓存,用于明确测试无缓存查询。

第 24 条注释,第 174 行

desktop/src-tauri/crates/core/src/storage/mod.rs:174

/// 当前 user_version。

第 25 条注释,第 181 行

desktop/src-tauri/crates/core/src/storage/mod.rs:181

/// 数据修订号:单调递增,查询按同一修订号返回一致视图。

第 26 条注释,第 186 行

desktop/src-tauri/crates/core/src/storage/mod.rs:186

/// 提升数据修订号并返回新值。仅在事务内调用。

第 27 条注释,第 203 行

desktop/src-tauri/crates/core/src/storage/mod.rs:203

/// 进程重启恢复:把 running 作业标记为 interrupted(不依赖 PID 文件)。

第 28 条注释,第 213 行

desktop/src-tauri/crates/core/src/storage/mod.rs:213

/// 确保本机来源主机身份存在并返回其不透明稳定 ID(data-contract.md#provenance)。

第 29 条注释,第 214 行

desktop/src-tauri/crates/core/src/storage/mod.rs:214

/// - 首次调用生成 `host-<32hex>` 持久化于 origin_hosts(is_local=1),

第 30 条注释,第 215 行

desktop/src-tauri/crates/core/src/storage/mod.rs:215

/// 并把 settings.local_origin_host_id 指向它;不使用主机名/IP/硬件指纹作身份。

第 31 条注释,第 216 行

desktop/src-tauri/crates/core/src/storage/mod.rs:216

/// - 后续调用返回同一 ID 并记录主机名观察(改名不换 ID、不重复计数;

第 32 条注释,第 217 行

desktop/src-tauri/crates/core/src/storage/mod.rs:217

/// 主机名只进观察表用于辨认,不参与任何键)。

第 33 条注释,第 218 行

desktop/src-tauri/crates/core/src/storage/mod.rs:218

/// - 复制数据库到新机器时不自动认领历史:身份与采集由调用方显式传入,

第 34 条注释,第 219 行

desktop/src-tauri/crates/core/src/storage/mod.rs:219

/// 来源注册冲突走映射/确认流程(M1a 只提供判定,不做静默合并)。

第 35 条注释,第 269 行

desktop/src-tauri/crates/core/src/storage/mod.rs:269

/// 当前本机主机 ID(未初始化时为 None)。

第 36 条注释,第 282 行

desktop/src-tauri/crates/core/src/storage/mod.rs:282

/// 记录主机名观察(同一主机的历史名称都保留;改名不换 ID)。

第 37 条注释,第 302 行

desktop/src-tauri/crates/core/src/storage/mod.rs:302

/// 注册导入来源主机并返回 host_id;同一 host_id 再次登记仍保留同一标识。