feat(sidebar): support hierarchical batch connection moves

This commit is contained in:
二丫讲梵 authored and GitHub committed 2026-08-22 19:18:11 +08:00
1 parent 36c9500a4e
commit 904efff6b3
10 files changed
+105 -38

No files matched your search

@@ -14,7 +14,7 @@ import { isTauriRuntime } from "@/lib/backend/tauriRuntime";
import { revealPathInFileManager } from "@/lib/backend/tauri";
import { canConfigureVisibleSchemasForTreeNode } from "@/lib/database/databaseFeatureSupport";
import { canCloseSidebarDatabaseConnection } from "@/lib/sidebar/sidebarDatabaseOpenState";
import { selectedConnectionDeleteTargets, selectedConnectionDisconnectTargets, selectedConnectionDuplicateTargets, selectedConnectionGroupDeleteTargets } from "@/lib/sidebar/sidebarConnectionSelection";
import { selectedConnectionDeleteTargets, selectedConnectionDisconnectTargets, selectedConnectionDuplicateTargets, selectedConnectionGroupDeleteTargets, selectedConnectionMoveTargets } from "@/lib/sidebar/sidebarConnectionSelection";
import { releaseConnectionFromMultiSelection } from "@/lib/sidebar/sidebarConnectionMultiSelect";
import { connectionDeleteTargetSnapshot, connectionGroupDeleteTargetSnapshot, deleteConnectionsWithGroup, showDeleteConfirm, showDeleteGroupConfirm, sidebarFormTarget } from "@/components/sidebar/sidebarTreeDialogState";
import { connectionCanConfigureSidebarVisibleDatabases } from "@/lib/sidebar/sidebarVisibleFilterMenu";
@@ -386,19 +386,20 @@ export function useSidebarConnectionMutationRuntime(options: SidebarConnectionMu
}
function moveToGroup(groupId: string | null) {
const connectionId = activeNode.value.connectionId;
if (!connectionId) return;
connectionStore.moveConnectionToGroup(connectionId, groupId);
releaseConnectionFromMultiSelection(connectionStore, connectionId);
const targets = selectedConnectionMoveTargets(activeNode.value, selectedTreeNodesInVisibleOrder());
if (!targets.length) return;
for (const target of targets) connectionStore.moveConnectionToGroup(target.connectionId, groupId);
for (const target of targets) releaseConnectionFromMultiSelection(connectionStore, target.connectionId);
}
function createGroupAndMoveConnection(name: string): boolean {
const node = sidebarFormTarget.value ?? activeNode.value;
const normalizedName = name.trim();
if (!normalizedName || !node.connectionId) return false;
const targets = selectedConnectionMoveTargets(node, selectedTreeNodesInVisibleOrder());
if (!normalizedName || !targets.length) return false;
const groupId = connectionStore.createConnectionGroup(normalizedName);
connectionStore.moveConnectionToGroup(node.connectionId, groupId);
releaseConnectionFromMultiSelection(connectionStore, node.connectionId);
for (const target of targets) connectionStore.moveConnectionToGroup(target.connectionId, groupId);
for (const target of targets) releaseConnectionFromMultiSelection(connectionStore, target.connectionId);
return true;
}