From 84e2093b82f22d23bd692908f5eab8e33af42b6f Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Wed, 27 May 2026 15:53:05 +0800 Subject: [PATCH] fix(hana): allow empty database context --- apps/desktop/src/components/editor/QueryEditor.vue | 12 ++++++------ apps/desktop/src/components/sidebar/TreeItem.vue | 10 +++++++--- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/apps/desktop/src/components/editor/QueryEditor.vue b/apps/desktop/src/components/editor/QueryEditor.vue index c87bc3073..9cea64115 100644 --- a/apps/desktop/src/components/editor/QueryEditor.vue +++ b/apps/desktop/src/components/editor/QueryEditor.vue @@ -382,7 +382,7 @@ function completionCacheKey(table: { name: string; schema?: string | null }) { async function ensureColumnsForTable(table: { name: string; schema?: string | null }) { const cacheKey = completionCacheKey(table); - if (cachedColumnsByTable.has(cacheKey) || !props.connectionId || !props.database) return; + if (cachedColumnsByTable.has(cacheKey) || !props.connectionId || props.database == null) return; const columns = await connectionStore.listCompletionColumns( props.connectionId, props.database, @@ -453,7 +453,7 @@ function createSignatureDom(signature: ReturnType { if (event.button !== 0) return false; const currentView = view.value; - if (!currentView || !props.connectionId || !props.database) { + if (!currentView || !props.connectionId || props.database == null) { return false; } diff --git a/apps/desktop/src/components/sidebar/TreeItem.vue b/apps/desktop/src/components/sidebar/TreeItem.vue index 21a94ed89..e8d2e133a 100644 --- a/apps/desktop/src/components/sidebar/TreeItem.vue +++ b/apps/desktop/src/components/sidebar/TreeItem.vue @@ -159,6 +159,10 @@ function currentDatabaseType(): DatabaseType | undefined { return props.node.connectionId ? connectionStore.getConfig(props.node.connectionId)?.db_type : undefined; } +function hasNodeDatabaseContext(node: TreeNode): node is TreeNode & { connectionId: string; database: string } { + return !!node.connectionId && hasTreeNodeDatabaseContext(node); +} + function getIconInfo(node: TreeNode): { icon: any; colorClass: string } | null { switch (node.type) { case "connection": @@ -446,7 +450,7 @@ async function openObjectBrowser() { await connectionStore.ensureConnected(node.connectionId); connectionStore.activeConnectionId = node.connectionId; - if (node.database) { + if (hasTreeNodeDatabaseContext(node)) { queryStore.openObjectBrowser(node.connectionId, node.database, node.schema); return; } @@ -482,7 +486,7 @@ function openSavedSqlFile() { async function openData() { const node = props.node; - if (!(node.type === "table" || node.type === "view") || !node.connectionId || !node.database) return; + if (!(node.type === "table" || node.type === "view") || !hasNodeDatabaseContext(node)) return; const config = connectionStore.getConfig(node.connectionId); const traceId = uuid().slice(0, 8); const startedAt = performance.now(); @@ -562,7 +566,7 @@ async function newQuery() { try { await connectionStore.ensureConnected(node.connectionId); connectionStore.activeConnectionId = node.connectionId; - if (node.database) { + if (hasTreeNodeDatabaseContext(node)) { queryStore.createTab(node.connectionId, node.database, undefined, "query", node.schema); return; }