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数据库存储' }}
+
+
+
+
切换方式选择:
+
+
+
+
+
+
+
+
+
+