36 files changed
+232
-19
No files matched your search
@@ -104,7 +104,7 @@ import { migrateSqlServerLegacyCompatibilityConfig, requiresSqlServerLegacyCompa
|
||||
import { gaussdbMTypeDisplayName } from "@/lib/table/postgresDataTypeHelp";
|
||||
import { deleteTabResultSnapshotsForOwner } from "@/lib/tabs/tabResultCache";
|
||||
import { disposeSqlServerActivityTracesForConnection, hasSqlServerActivityTraceForConnection } from "@/lib/sqlserver/sqlServerActivityTraceRuntime";
|
||||
import { connectionUsesVisibleSchemaFilter, filterDatabaseNamesForConnection, filterSchemaNamesForConnection, filterVisibleDatabaseNames, normalizeVisibleDatabaseSelection } from "@/lib/database/visibleDatabases";
|
||||
import { connectionUsesVisibleSchemaFilter, filterDatabaseNamesForConnection, filterSchemaNamesForConnection, filterVisibleDatabaseNames, normalizeVisibleDatabaseSelection, visibleDatabasePatternsAreEnabled } from "@/lib/database/visibleDatabases";
|
||||
import {
|
||||
buildObjectGroupPlaceholderNodes,
|
||||
buildGroupedObjectTreeNodes,
|
||||
@@ -3442,6 +3442,26 @@ export const useConnectionStore = defineStore("connection", () => {
|
||||
await reloadConnectionDatabaseChildren(connectionId);
|
||||
}
|
||||
|
||||
// 显式勾选 + 通配符模式一并保存(#7164):模式对之后新建的库持续生效
|
||||
async function setVisibleDatabaseFilter(connectionId: string, databaseNames: string[], patterns: string[]) {
|
||||
const config = getConfig(connectionId);
|
||||
if (!config) return;
|
||||
const normalizedPatterns = patterns.map((pattern) => pattern.trim()).filter((pattern) => pattern !== "");
|
||||
const idx = connections.value.findIndex((connection) => connection.id === connectionId);
|
||||
if (idx < 0) return;
|
||||
const nextConnections = [...connections.value];
|
||||
nextConnections[idx] = {
|
||||
...nextConnections[idx],
|
||||
visible_databases: normalizeVisibleDatabaseSelection(databaseNames, databaseNames),
|
||||
visible_database_patterns: normalizedPatterns.length > 0 ? normalizedPatterns : undefined,
|
||||
};
|
||||
await persistConnections(nextConnections);
|
||||
connections.value = nextConnections;
|
||||
invalidateCompletionCache(connectionId);
|
||||
rebuildTreeNodes();
|
||||
await reloadConnectionDatabaseChildren(connectionId);
|
||||
}
|
||||
|
||||
function recordPrimaryVisibleObjectNames(connectionId: string, objectNames: readonly string[]) {
|
||||
const names = [...objectNames];
|
||||
const existing = primaryVisibleObjectNames.value[connectionId];
|
||||
@@ -3473,7 +3493,20 @@ export const useConnectionStore = defineStore("connection", () => {
|
||||
|
||||
async function clearVisibleDatabases(connectionId: string) {
|
||||
const config = getConfig(connectionId);
|
||||
if (!config || !Array.isArray(config.visible_databases)) return;
|
||||
if (!config || (!Array.isArray(config.visible_databases) && !visibleDatabasePatternsAreEnabled(config.visible_database_patterns))) return;
|
||||
if (visibleDatabasePatternsAreEnabled(config.visible_database_patterns)) {
|
||||
const idx = connections.value.findIndex((connection) => connection.id === connectionId);
|
||||
if (idx >= 0) {
|
||||
const nextConnections = [...connections.value];
|
||||
nextConnections[idx] = { ...nextConnections[idx], visible_databases: undefined, visible_database_patterns: undefined };
|
||||
await persistConnections(nextConnections);
|
||||
connections.value = nextConnections;
|
||||
invalidateCompletionCache(connectionId);
|
||||
rebuildTreeNodes();
|
||||
await reloadConnectionDatabaseChildren(connectionId);
|
||||
return;
|
||||
}
|
||||
}
|
||||
await updateVisibleDatabasesConfig(connectionId, undefined);
|
||||
await reloadConnectionDatabaseChildren(connectionId);
|
||||
}
|
||||
@@ -8743,6 +8776,7 @@ export const useConnectionStore = defineStore("connection", () => {
|
||||
getRedisDatabaseAlias,
|
||||
setRedisDatabaseAlias,
|
||||
setVisibleDatabases,
|
||||
setVisibleDatabaseFilter,
|
||||
clearVisibleDatabases,
|
||||
ensureVisibleDatabase,
|
||||
setVisibleSchemas,
|
||||
|
||||
Reference in new issue
Block a user