From e76b836eb422b72f09c38bd5c5fc1c8a3fc21d7b Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Tue, 5 May 2026 05:13:55 +0800 Subject: [PATCH] feat: refactor database loading logic and update database options handling --- src/components/editor/AiAssistant.vue | 28 +++++++++++---------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/src/components/editor/AiAssistant.vue b/src/components/editor/AiAssistant.vue index f683a097b..7bb94ae38 100644 --- a/src/components/editor/AiAssistant.vue +++ b/src/components/editor/AiAssistant.vue @@ -26,11 +26,12 @@ import DatabaseIcon from "@/components/icons/DatabaseIcon.vue"; import { useQueryStore } from "@/stores/queryStore"; import { buildAiContext, runAiStream, type AiAction } from "@/lib/ai"; import { - listDatabases, redisListDatabases, mongoListDatabases, aiTestConnection, aiCancelStream, + aiTestConnection, aiCancelStream, saveAiConversation, loadAiConversations, deleteAiConversation, type AiConversation, } from "@/lib/api"; import type { AiMessage } from "@/lib/api"; import type { ConnectionConfig, QueryTab } from "@/types/database"; +import { useDatabaseOptions } from "@/composables/useDatabaseOptions"; const { t } = useI18n(); const settings = useSettingsStore(); @@ -99,23 +100,16 @@ const isWaitingForFirstDelta = computed(() => { const activePlaceholder = computed(() => t(`ai.placeholders.${activeAction.value}`)); -const databaseOptions = ref([]); +const { databaseOptions: allDbOptions, loadDatabaseOptions } = useDatabaseOptions(); + +const dbOptions = computed(() => { + if (!props.connection) return []; + return allDbOptions.value[props.connection.id] || []; +}); async function loadDatabases() { if (!props.connection) return; - try { - if (props.connection.db_type === "redis") { - const dbs = await redisListDatabases(props.connection.id); - databaseOptions.value = dbs.map(String); - } else if (props.connection.db_type === "mongodb") { - databaseOptions.value = await mongoListDatabases(props.connection.id); - } else { - const list = await listDatabases(props.connection.id); - databaseOptions.value = list.map((d: { name: string }) => d.name); - } - } catch { - databaseOptions.value = []; - } + await loadDatabaseOptions(props.connection.id); } function changeConnection(connectionId: string) { @@ -549,8 +543,8 @@ function formatInlineText(text: string): string { {{ tab?.database || t('editor.selectDatabase') }} - {{ db }} - {{ tab.database }} + {{ db }} + {{ tab.database }}