feat(connection): select new databases when visible
This commit is contained in:
4 files changed
+32
-1
No files matched your search
@@ -2989,6 +2989,7 @@ async function createDuckDbAttachedDatabaseFile() {
|
||||
attached_databases: [...(config.attached_databases ?? []), { name, path }],
|
||||
});
|
||||
}
|
||||
await connectionStore.ensureVisibleDatabase(node.connectionId, name);
|
||||
await connectionStore.loadDatabases(node.connectionId, { force: true });
|
||||
connectionStore.selectedTreeNodeId = `${node.connectionId}:${name}`;
|
||||
toast(t("contextMenu.createDuckDbFileSuccess", { name }), 3000);
|
||||
@@ -3008,6 +3009,7 @@ async function confirmCreateDatabase() {
|
||||
if (config?.db_type === "mongodb") {
|
||||
await api.mongoCreateDatabase(node.connectionId, name);
|
||||
toast(t("contextMenu.createDatabaseSuccess", { name }), 3000);
|
||||
await connectionStore.ensureVisibleDatabase(node.connectionId, name);
|
||||
await connectionStore.loadMongoDatabases(node.connectionId);
|
||||
return;
|
||||
}
|
||||
@@ -3021,6 +3023,7 @@ async function confirmCreateDatabase() {
|
||||
});
|
||||
await api.executeQuery(node.connectionId, "", sql);
|
||||
toast(t("contextMenu.createDatabaseSuccess", { name }), 3000);
|
||||
await connectionStore.ensureVisibleDatabase(node.connectionId, name);
|
||||
await connectionStore.loadDatabases(node.connectionId, { force: true });
|
||||
} catch (e: any) {
|
||||
toast(t("contextMenu.tableOperationFailed", { message: e?.message || String(e) }), 5000);
|
||||
|
||||
@@ -25,6 +25,13 @@ export function initialVisibleDatabaseSelection(databaseNames: string[], visible
|
||||
return filterDatabaseNamesForVisiblePicker(databaseNames, connection);
|
||||
}
|
||||
|
||||
export function appendVisibleDatabaseSelection(visibleDatabases: string[] | undefined, databaseName: string): string[] | undefined {
|
||||
if (!Array.isArray(visibleDatabases)) return undefined;
|
||||
const name = databaseName.trim();
|
||||
if (!name || visibleDatabases.includes(name)) return visibleDatabases;
|
||||
return [...visibleDatabases, name];
|
||||
}
|
||||
|
||||
export function visibleDatabaseSelectionIsStale(previous: VisibleDatabaseConnectionFields, current: VisibleDatabaseConnectionFields): boolean {
|
||||
return visibleDatabaseFingerprint(previous) !== visibleDatabaseFingerprint(current);
|
||||
}
|
||||
|
||||
@@ -61,6 +61,7 @@ import { kvRootNodeLabel } from "@/lib/kv/kvRootPresentation";
|
||||
import { REDIS_SCAN_PAGE_SIZE_DEFAULT } from "@/lib/redis/redisKeyPattern";
|
||||
import { appendAgentDriverUpdateHint, hasAgentDriverUpdate, type AgentDriverInstallState } from "@/lib/connection/agentDriverInstallHint";
|
||||
import { appendConnectionErrorHints } from "@/lib/connection/connectionErrorHints";
|
||||
import { appendVisibleDatabaseSelection } from "@/lib/connection/connectionVisibleDatabases";
|
||||
import { createMetadataLoadTrace, logMetadataLoadTrace, MetadataLoadCoordinator, type MetadataLoadTraceLogger } from "@/lib/metadata/metadataLoadCoordinator";
|
||||
import type { MetadataScopeInput } from "@/lib/metadata/metadataLoadScope";
|
||||
import { MetadataResultCache, type MetadataCacheInvalidation } from "@/lib/metadata/metadataResultCache";
|
||||
@@ -1637,6 +1638,14 @@ export const useConnectionStore = defineStore("connection", () => {
|
||||
await reloadConnectionDatabaseChildren(connectionId);
|
||||
}
|
||||
|
||||
async function ensureVisibleDatabase(connectionId: string, databaseName: string) {
|
||||
const config = getConfig(connectionId);
|
||||
if (!config) return;
|
||||
const visibleDatabases = appendVisibleDatabaseSelection(config.visible_databases, databaseName);
|
||||
if (visibleDatabases === config.visible_databases) return;
|
||||
await updateVisibleDatabasesConfig(connectionId, visibleDatabases);
|
||||
}
|
||||
|
||||
async function updateVisibleDatabasesConfig(connectionId: string, visibleDatabases: string[] | undefined) {
|
||||
const idx = connections.value.findIndex((connection) => connection.id === connectionId);
|
||||
if (idx < 0) return;
|
||||
@@ -4776,6 +4785,7 @@ export const useConnectionStore = defineStore("connection", () => {
|
||||
isDefaultDatabase,
|
||||
setVisibleDatabases,
|
||||
clearVisibleDatabases,
|
||||
ensureVisibleDatabase,
|
||||
setVisibleSchemas,
|
||||
clearVisibleSchemas,
|
||||
removeConnection,
|
||||
|
||||
Reference in new issue
Block a user