From 1ebc3fd12b2f5114907509ce8b3cef156b257388 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=8C=E4=B8=AB=E8=AE=B2=E6=A2=B5?= Date: Sun, 26 Jul 2026 11:20:05 +0800 Subject: [PATCH] feat(nacos): enhance configuration management --- Cargo.lock | 20 + .../connection/ConnectionDialog.vue | 23 +- .../src/components/layout/ContentArea.vue | 12 +- .../components/nacos/NacosAdminConsole.vue | 1246 ++++++++++++++--- .../nacos/NacosConfigBatchDialog.vue | 294 ++++ .../nacos/NacosContentSearchDialog.vue | 188 +++ .../__tests__/NacosAdminConsoleLayout.spec.ts | 42 + .../__tests__/NacosConfigBatchDialog.spec.ts | 132 ++ .../sidebar/SidebarTreeRuntimeHost.vue | 12 +- ...abaseSpecificMutationRuntime.nacos.spec.ts | 94 ++ .../useNacosConfigListColumnResize.ts | 53 +- ...eSidebarDatabaseSpecificMutationRuntime.ts | 2 + apps/desktop/src/i18n/locales/en.ts | 101 +- apps/desktop/src/i18n/locales/es.ts | 101 +- apps/desktop/src/i18n/locales/it.ts | 101 +- apps/desktop/src/i18n/locales/ja.ts | 101 +- apps/desktop/src/i18n/locales/pt-BR.ts | 101 +- apps/desktop/src/i18n/locales/zh-CN.ts | 101 +- apps/desktop/src/i18n/locales/zh-TW.ts | 101 +- .../lib/__tests__/nacos/nacosAdmin.spec.ts | 250 ++++ .../nacos/nacosNamespaceCache.spec.ts | 81 ++ apps/desktop/src/lib/backend/api.ts | 7 + apps/desktop/src/lib/backend/http.ts | 95 ++ apps/desktop/src/lib/backend/nacos-tauri.ts | 42 +- .../lib/database/databaseFeatureSupport.ts | 4 + apps/desktop/src/lib/nacos/nacosAdmin.ts | 233 ++- .../src/lib/nacos/nacosNamespaceCache.ts | 40 + apps/desktop/src/stores/queryStore.ts | 21 +- apps/desktop/src/types/database.ts | 4 + apps/desktop/src/types/nacos.ts | 140 ++ crates/dbx-core/Cargo.toml | 1 + crates/dbx-core/src/nacos/archive.rs | 354 +++++ crates/dbx-core/src/nacos/batch.rs | 787 +++++++++++ crates/dbx-core/src/nacos/config.rs | 3 +- crates/dbx-core/src/nacos/http.rs | 668 ++++++++- crates/dbx-core/src/nacos/mod.rs | 3 + crates/dbx-core/src/nacos/port.rs | 11 + crates/dbx-core/src/nacos/search.rs | 1007 +++++++++++++ crates/dbx-core/src/nacos/service.rs | 24 +- crates/dbx-core/src/nacos/types.rs | 166 +++ crates/dbx-core/src/schema_diff.rs | 2 +- crates/dbx-web/src/auth.rs | 8 +- crates/dbx-web/src/main.rs | 8 + crates/dbx-web/src/routes/connection.rs | 1 + crates/dbx-web/src/routes/mongo.rs | 1 + crates/dbx-web/src/routes/mq.rs | 1 + crates/dbx-web/src/routes/nacos.rs | 469 ++++++- crates/dbx-web/src/state.rs | 9 + .../app-tests/databaseCapabilities.test.ts | 8 +- .../app-tests/nacosConfigListLayout.test.ts | 34 +- src-tauri/src/commands/nacos_cmd.rs | 88 ++ src-tauri/src/lib.rs | 7 + 52 files changed, 7139 insertions(+), 263 deletions(-) create mode 100644 apps/desktop/src/components/nacos/NacosConfigBatchDialog.vue create mode 100644 apps/desktop/src/components/nacos/NacosContentSearchDialog.vue create mode 100644 apps/desktop/src/components/nacos/__tests__/NacosAdminConsoleLayout.spec.ts create mode 100644 apps/desktop/src/components/nacos/__tests__/NacosConfigBatchDialog.spec.ts create mode 100644 apps/desktop/src/composables/__tests__/useSidebarDatabaseSpecificMutationRuntime.nacos.spec.ts create mode 100644 apps/desktop/src/lib/__tests__/nacos/nacosNamespaceCache.spec.ts create mode 100644 apps/desktop/src/lib/nacos/nacosNamespaceCache.ts create mode 100644 crates/dbx-core/src/nacos/archive.rs create mode 100644 crates/dbx-core/src/nacos/batch.rs create mode 100644 crates/dbx-core/src/nacos/search.rs diff --git a/Cargo.lock b/Cargo.lock index ae176a141..7ca1331ae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1916,6 +1916,7 @@ dependencies = [ "rustls-pemfile 2.2.0", "serde", "serde_json", + "serde_yaml_ng", "sha2 0.10.9", "sqlparser", "ssfmt", @@ -7369,6 +7370,19 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "serde_yaml_ng" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4db627b98b36d4203a7b458cf3573730f2bb591b28871d916dfa9efabfd41f" +dependencies = [ + "indexmap 2.14.0", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + [[package]] name = "serdect" version = "0.4.3" @@ -9250,6 +9264,12 @@ dependencies = [ "ctutils", ] +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + [[package]] name = "untrusted" version = "0.7.1" diff --git a/apps/desktop/src/components/connection/ConnectionDialog.vue b/apps/desktop/src/components/connection/ConnectionDialog.vue index f0c59bd12..be5bf35c3 100644 --- a/apps/desktop/src/components/connection/ConnectionDialog.vue +++ b/apps/desktop/src/components/connection/ConnectionDialog.vue @@ -1292,9 +1292,12 @@ function buildNacosAdminConfig(): NacosAdminConfig { if (nacosImplementation.value === "rnacos" && normalized.warnings.length) { throw new Error(t("connection.nacosRNacosOpenApiRequired")); } + const rnacosConsoleConfigured = nacosImplementation.value === "rnacos" && !!nacosRNacosConsoleAddr.value.trim(); + if (nacosImplementation.value === "rnacos" && nacosHistoryEnabled.value && !rnacosConsoleConfigured) { + throw new Error(t("connection.nacosRNacosConsoleUrlRequired")); + } let rnacosConsoleAuth: NacosRNacosConsoleAuth | undefined; - if (nacosImplementation.value === "rnacos" && nacosHistoryEnabled.value) { - if (!nacosRNacosConsoleAddr.value.trim()) throw new Error(t("connection.nacosRNacosConsoleUrlRequired")); + if (rnacosConsoleConfigured) { if (nacosConsoleAuthKind.value === "inherit") { if (nacosAuthKind.value !== "usernamePassword") throw new Error(t("connection.nacosConsoleAuthSeparateRequired")); rnacosConsoleAuth = { kind: "inherit" }; @@ -1312,7 +1315,7 @@ function buildNacosAdminConfig(): NacosAdminConfig { serverAddr: normalized.serverAddr, namespace: nacosNamespace.value.trim() || undefined, contextPath: normalized.contextPath || undefined, - rnacosConsoleAddr: nacosImplementation.value === "rnacos" && nacosHistoryEnabled.value ? nacosRNacosConsoleAddr.value.trim() || undefined : undefined, + rnacosConsoleAddr: nacosImplementation.value === "rnacos" ? nacosRNacosConsoleAddr.value.trim() || undefined : undefined, rnacosHistoryEnabled: nacosImplementation.value === "rnacos" ? nacosHistoryEnabled.value : undefined, rnacosConsoleAuth, auth: buildNacosAuth(), @@ -5274,11 +5277,15 @@ function openExternalUrl(url: string) { -