feat: 接管旧版扩展安装记录

This commit is contained in:
2026-09-10 07:15:23 +08:00
parent 2f1c0f3420
commit 2c87377740
8 changed files with 566 additions and 4 deletions
@@ -308,6 +308,7 @@ impl ExtensionStore {
CREATE TABLE IF NOT EXISTS extension_trust(source TEXT NOT NULL,namespace TEXT NOT NULL,key_id TEXT NOT NULL,setting TEXT NOT NULL,revision TEXT NOT NULL,PRIMARY KEY(source,namespace,key_id));
CREATE TABLE IF NOT EXISTS extension_blocks(identity TEXT PRIMARY KEY,reason TEXT NOT NULL);
CREATE TABLE IF NOT EXISTS extension_confirmations(operation_id TEXT PRIMARY KEY,request_hash TEXT NOT NULL,review_hash TEXT NOT NULL,changes TEXT NOT NULL);
CREATE TABLE IF NOT EXISTS legacy_installations(kind TEXT NOT NULL,package_id TEXT NOT NULL,source_path TEXT NOT NULL,expected_digest TEXT NOT NULL,observed_digest TEXT,ownership TEXT NOT NULL,state TEXT NOT NULL,enabled INTEGER NOT NULL CHECK(enabled=0),permissions TEXT NOT NULL CHECK(permissions='[]'),source_db_digest TEXT NOT NULL,PRIMARY KEY(kind,package_id));
PRAGMA user_version=6; COMMIT;")?;
crate::extension_transaction::recover(&mut db)?;
Ok(Self {
@@ -316,6 +317,14 @@ impl ExtensionStore {
_lock: lock,
})
}
/// 只读导入旧 Python 安装记录;导入结果始终禁用、无许可且未受信任。
pub fn import_legacy_installations(
&mut self,
legacy_data_root: &Path,
) -> Result<Vec<crate::extension_legacy::LegacyImport>> {
crate::extension_legacy::import(&mut self.db, &self.root, legacy_data_root)
}
pub fn trust_setting(
&self,
source_url: &str,