From 538aeed99c483923e3be52222f369c640dc04fe6 Mon Sep 17 00:00:00 2001 From: HolyeTyrone <43714994+HolyeTyrone@users.noreply.github.com> Date: Tue, 8 Sep 2026 16:46:39 +0800 Subject: [PATCH] feat(transfer): add rebuild structure and data mode --- .gitignore | 1 + .../components/editor/DangerConfirmDialog.vue | 2 +- .../transfer/DataTransferDialog.vue | 261 ++- .../__tests__/transferStrategy.spec.ts | 301 ++++ .../components/transfer/transferStrategy.ts | 97 ++ apps/desktop/src/i18n/locales/en.ts | 11 +- apps/desktop/src/i18n/locales/es.ts | 13 +- apps/desktop/src/i18n/locales/it.ts | 11 +- apps/desktop/src/i18n/locales/ja.ts | 11 +- apps/desktop/src/i18n/locales/ko.ts | 13 +- apps/desktop/src/i18n/locales/pt-BR.ts | 13 +- apps/desktop/src/i18n/locales/zh-CN.ts | 13 +- apps/desktop/src/i18n/locales/zh-TW.ts | 13 +- apps/desktop/src/lib/backend/tauri.ts | 7 + .../__tests__/transferTaskStore.spec.ts | 31 + apps/desktop/src/stores/transferTaskStore.ts | 9 +- apps/desktop/src/types/database.ts | 4 + crates/dbx-core/src/db_admin_sql.rs | 102 +- crates/dbx-core/src/lib.rs | 1 + crates/dbx-core/src/script_generator.rs | 21 + .../dbx-core/src/sql_dialect/ddl_profile.rs | 154 +- crates/dbx-core/src/transfer.rs | 1483 +++++++++++++---- crates/dbx-core/src/transfer/ddl_plan.rs | 420 +++++ crates/dbx-core/src/transfer/rebuild_tests.rs | 116 ++ crates/dbx-core/src/transfer_rebuild.rs | 1476 ++++++++++++++++ crates/dbx-core/tests/live_mysql_transfer.rs | 909 ++++++++++ .../dbx-core/tests/live_postgres_transfer.rs | 582 ++++++- .../tests/live_sqlserver_completion.rs | 3 + .../dbx-core/tests/live_sqlserver_transfer.rs | 284 ++++ crates/dbx-web/src/routes/transfer.rs | 127 +- docs/content/docs/data-transfer.cn.mdx | 3 + docs/content/docs/data-transfer.mdx | 3 + docs/content/docs/production-safety.cn.mdx | 1 + docs/content/docs/production-safety.mdx | 1 + .../2026-09-03-transfer-drop-before-create.md | 400 +++++ .../2026-09-07-transfer-rebuild-hardening.md | 102 ++ src-tauri/src/commands/transfer.rs | 125 +- 37 files changed, 6720 insertions(+), 404 deletions(-) create mode 100644 apps/desktop/src/components/transfer/__tests__/transferStrategy.spec.ts create mode 100644 apps/desktop/src/components/transfer/transferStrategy.ts create mode 100644 crates/dbx-core/src/transfer/ddl_plan.rs create mode 100644 crates/dbx-core/src/transfer/rebuild_tests.rs create mode 100644 crates/dbx-core/src/transfer_rebuild.rs create mode 100644 crates/dbx-core/tests/live_sqlserver_transfer.rs create mode 100644 docs/pips/plans/2026-09-03-transfer-drop-before-create.md create mode 100644 docs/pips/plans/2026-09-07-transfer-rebuild-hardening.md diff --git a/.gitignore b/.gitignore index 29987aa919..ea8c1f5f91 100644 --- a/.gitignore +++ b/.gitignore @@ -70,6 +70,7 @@ tmp/ .dlp-quarantine/ outputs/ target-ai-write-confirmation/ +.serena/ # Code review tool artifacts review_diff.json diff --git a/apps/desktop/src/components/editor/DangerConfirmDialog.vue b/apps/desktop/src/components/editor/DangerConfirmDialog.vue index b2da011e2e..d3c2464f25 100644 --- a/apps/desktop/src/components/editor/DangerConfirmDialog.vue +++ b/apps/desktop/src/components/editor/DangerConfirmDialog.vue @@ -146,7 +146,7 @@ async function copyFullCode() {

{{ message || t("dangerDialog.message") }}

-

{{ detailsText }}

+

{{ detailsText }}

diff --git a/apps/desktop/src/components/transfer/DataTransferDialog.vue b/apps/desktop/src/components/transfer/DataTransferDialog.vue index 2161fa5219..0900b40ae1 100644 --- a/apps/desktop/src/components/transfer/DataTransferDialog.vue +++ b/apps/desktop/src/components/transfer/DataTransferDialog.vue @@ -1,11 +1,12 @@