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 再次登记仍保留同一标识。