From 8de12dbcfcf67b758887ccc1c90a87bbe5c93dd0 Mon Sep 17 00:00:00 2001 From: kjqwer <2990346238@qq.com> Date: Sat, 11 Oct 2025 16:10:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BB=85=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E8=A1=A8=E5=8A=9F=E8=83=BD=EF=BC=8C=E9=98=B2?= =?UTF-8?q?=E6=AD=A2=E8=A6=86=E7=9B=96=E5=88=A0=E9=99=A4=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/routes/download.js | 8 ++ backend/services/download-registry.js | 27 ++++++ ui/src/components/common/RegistryWidget.vue | 98 +++++++++++++++++---- 3 files changed, 114 insertions(+), 19 deletions(-) diff --git a/backend/routes/download.js b/backend/routes/download.js index 9597b1b..b9df722 100644 --- a/backend/routes/download.js +++ b/backend/routes/download.js @@ -1262,6 +1262,14 @@ router.put('/registry/config', async (req, res) => { // 更新配置 const updatedConfig = await downloadService.cacheConfigManager.updateConfig(updateData); + // 如果更新了存储模式,需要重新加载存储模式配置 + if (storageMode) { + const reloadResult = await downloadService.downloadRegistry.reloadStorageMode(); + if (!reloadResult.success) { + logger.warn('重新加载存储模式失败:', reloadResult.error); + } + } + res.json({ success: true, data: { diff --git a/backend/services/download-registry.js b/backend/services/download-registry.js index 63d1e59..63504f1 100644 --- a/backend/services/download-registry.js +++ b/backend/services/download-registry.js @@ -73,6 +73,33 @@ class DownloadRegistry { } } + /** + * 重新加载存储模式配置(用于切换存储模式时) + */ + async reloadStorageMode() { + try { + await this.loadStorageMode(); + + // 根据新的存储模式重新初始化相应的存储 + if (this.storageMode === 'database') { + if (!this.registryDatabase && this.databaseManager) { + await this.initDatabaseStorage(); + } + } else { + // JSON模式下确保注册表已加载 + if (!this.loaded) { + await this.initJsonStorage(); + } + } + + logger.info(`存储模式已切换到: ${this.storageMode}`); + return { success: true, storageMode: this.storageMode }; + } catch (error) { + logger.error('重新加载存储模式失败:', error); + return { success: false, error: error.message }; + } + } + /** * 初始化数据库存储 */ diff --git a/ui/src/components/common/RegistryWidget.vue b/ui/src/components/common/RegistryWidget.vue index b8f8a02..8897904 100644 --- a/ui/src/components/common/RegistryWidget.vue +++ b/ui/src/components/common/RegistryWidget.vue @@ -110,6 +110,40 @@ 当前模式: {{ storageMode === 'json' ? 'JSON文件存储' : 'MySQL数据库存储' }} + + +
+
切换方式选择:
+
+
+ +
+ +
+ +
+
+