fix(sidebar): avoid opening schema browser from pg database

This commit is contained in:
t8y2
2026-05-17 15:13:16 +08:00
parent 52033f0846
commit 153daf6c09
3 changed files with 17 additions and 6 deletions
+2 -5
View File
@@ -76,7 +76,7 @@ import {
supportsDatabaseCreation,
supportsDatabaseSearch,
supportsFieldLineage,
supportsObjectBrowser,
supportsObjectBrowserTreeNode,
supportsSchemaDiagram,
supportsSqlFileExecution,
supportsTableImport,
@@ -1283,10 +1283,7 @@ const canOpenDatabaseSearch = computed(() => {
return !!props.node.database && supportsDatabaseSearch(nodeConfig.value?.db_type);
});
const canOpenObjectBrowser = computed(() => {
return (
(props.node.type === "database" || props.node.type === "schema" || props.node.type === "object-browser") &&
supportsObjectBrowser(nodeConfig.value?.db_type)
);
return supportsObjectBrowserTreeNode(nodeConfig.value?.db_type, props.node.type);
});
const canOpenTableImport = computed(() => {
return props.node.type === "table" && !!props.node.database && supportsTableImport(nodeConfig.value?.db_type);
+7 -1
View File
@@ -1,4 +1,4 @@
import type { DatabaseType } from "@/types/database";
import type { DatabaseType, TreeNodeType } from "@/types/database";
import {
AGENT_DRIVER_TYPES,
CREATE_DATABASE_SUPPORTED_TYPES,
@@ -72,6 +72,12 @@ export function supportsObjectBrowser(dbType?: DatabaseType): boolean {
return !!dbType && !["redis", "mongodb", "elasticsearch"].includes(dbType);
}
export function supportsObjectBrowserTreeNode(dbType: DatabaseType | undefined, nodeType: TreeNodeType): boolean {
if (!supportsObjectBrowser(dbType)) return false;
if (nodeType === "database" && isSchemaAware(dbType)) return false;
return nodeType === "database" || nodeType === "schema" || nodeType === "object-browser";
}
export function supportsTableTruncate(dbType?: DatabaseType): boolean {
return !!dbType && dbType !== "sqlite" && dbType !== "duckdb";
}
+8
View File
@@ -9,6 +9,7 @@ import {
supportsDriverManagement,
supportsFieldLineage,
supportsObjectBrowser,
supportsObjectBrowserTreeNode,
supportsSchemaDiagram,
supportsSqlFileExecution,
supportsTableImport,
@@ -111,3 +112,10 @@ test("describes feature support through capability helpers", () => {
assert.equal(supportsTableTruncate("mysql"), true);
assert.equal(supportsTableTruncate("duckdb"), false);
});
test("schema-aware database nodes do not open an object browser tab", () => {
assert.equal(supportsObjectBrowserTreeNode("postgres", "database"), false);
assert.equal(supportsObjectBrowserTreeNode("postgres", "schema"), true);
assert.equal(supportsObjectBrowserTreeNode("mysql", "database"), true);
assert.equal(supportsObjectBrowserTreeNode("mongodb", "database"), false);
});