From be251d596e1121e07ad9c961d499e4b5ef133bd0 Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Thu, 17 Sep 2026 18:37:56 +0800 Subject: [PATCH] feat(sql-file): show byte-based import progress Closes #9440 --- .../export/ExportProgressPopover.vue | 11 +- .../__tests__/ExportProgressPopover.spec.ts | 55 ++++ .../SqlFileExecutionDialog.retry.spec.ts | 15 + .../sql-file/SqlFileExecutionDialog.vue | 13 +- .../sql-file/SqlFileProgressIndicator.vue | 57 ++++ .../src/composables/useExportTracker.ts | 8 +- apps/desktop/src/i18n/locales/en.ts | 9 + apps/desktop/src/i18n/locales/zh-CN.ts | 9 + apps/desktop/src/i18n/locales/zh-TW.ts | 9 + apps/desktop/src/lib/backend/tauri.ts | 3 + .../src/lib/sql/sqlFileProgress.spec.ts | 34 +++ apps/desktop/src/lib/sql/sqlFileProgress.ts | 16 + crates/dbx-core/src/sql.rs | 14 + crates/dbx-core/src/sql_file_import.rs | 287 ++++++++++++++++-- 14 files changed, 497 insertions(+), 43 deletions(-) create mode 100644 apps/desktop/src/components/sql-file/SqlFileProgressIndicator.vue create mode 100644 apps/desktop/src/lib/sql/sqlFileProgress.spec.ts create mode 100644 apps/desktop/src/lib/sql/sqlFileProgress.ts diff --git a/apps/desktop/src/components/export/ExportProgressPopover.vue b/apps/desktop/src/components/export/ExportProgressPopover.vue index 57f8421da6..4410436277 100644 --- a/apps/desktop/src/components/export/ExportProgressPopover.vue +++ b/apps/desktop/src/components/export/ExportProgressPopover.vue @@ -6,6 +6,7 @@ import { Button } from "@/components/ui/button"; import { Loader2, Check, CheckCircle2, XCircle, AlertCircle, X, FileDown, DatabaseBackup, FileCode2, ArrowRightLeft, Layers3, GitCompareArrows, ChevronRight, FolderOpen, Copy } from "@lucide/vue"; import { formatDataTransferDuration, useExportTracker, type ExportTask } from "@/composables/useExportTracker"; import { dataTransferFailureCopyText, sqlFileFailureCopyText } from "@/components/export/failureDetailCopyText"; +import SqlFileProgressIndicator from "@/components/sql-file/SqlFileProgressIndicator.vue"; import { translateBackendError } from "@/i18n/backend-errors"; import { useToast } from "@/composables/useToast"; import { isTauriRuntime } from "@/lib/backend/tauriRuntime"; @@ -65,12 +66,6 @@ const progressValue = (task: ExportTask) => { if (!task.totalObjects || task.totalObjects <= 0) return 0; return Math.min(100, Math.round(((task.objectIndex ?? 0) / task.totalObjects) * 100)); } - if (task.kind === "sql-file") { - const total = task.totalRows ?? task.statementIndex ?? 0; - if (task.status === "Done") return 100; - if (total <= 0) return 0; - return Math.min(95, Math.round((task.rowsExported / total) * 100)); - } if (task.kind === "data-transfer") { if (!task.totalTables || task.totalTables <= 0) return 0; if (task.status === "Done") return 100; @@ -358,7 +353,8 @@ function openTask(task: ExportTask): void { -