feat(transfer): implement data transfer feature - #51
Merged
Conversation
Add Transfer page with 4 tabs for cross-database operations: - Export: CSV, JSONL, Excel, SQL format export with progress tracking - Import: CSV, JSONL, Excel, SQL format import with validation - Structure: DDL generation and SQL file execution for PostgreSQL, MySQL, SQLite, SQL Server - Migration: Cross-engine data migration with type mapping preview Backend: - Add src-tauri/src/transfer/ module (export, import, ddl, migration) - Add Tauri commands for all transfer operations - Add hex, rust_xlsxwriter, calamine crates for format support Frontend: - Add TransferPage.vue with tab-based wizard interface - Add transfer/ components for each operation type - Add transferStore, transferApi, transfer types - Update router and sidebar navigation - Add ColumnInfo type to connection.ts - Add i18n keys for all Transfer UI
- Add Excel (.xlsx) export/import with options (sheet name, headers, freeze, auto-fit) - Add SQL export with options (batch size, CREATE/DROP TABLE statements) - Redesign TransferStepCard header to compact 'STEP 01 SOURCE' format - Simplify ExportWizard to 2 steps (Source + Format & Output) - Replace RadioGroup with native radio for compact format selector row - Fix Checkbox component missing checkmark indicator (add inline SVG) - Add i18n keys for 'Format & Output' step title
Tabs persisted across sessions were not being closed when switching connections from ConnectionsPage. The previous approach relied on watch ordering, but connectionStore.connect() sets activeConnectionId before navigation, causing the fallback check to be a no-op. - Add connectionId field to QueryTab to track origin connection - Add reconcileTabsForConnection() to close/orphan mismatched tabs - Handle legacy tabs without connectionId (treat as stale) - Fix HistoryPage createTab() argument order bug - Remove reliance on activeConnectionId timing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces a new data transfer module to the Tauri backend, enabling advanced data import, export, and migration features across multiple database engines. It adds new command handlers for these operations, integrates them into the Tauri app, and provides utility modules for DDL generation and best-practice defaults. Additionally, it updates dependencies to support Excel and other file formats.
New Data Transfer Functionality:
transfermodule with Tauri command handlers for data export, import, and migration, supporting preview and execution for all major database engines (Postgres,MySQL,SQLServer,SQLite). Also includes file format detection and automatic column mapping for migrations. (src-tauri/src/commands/transfer.rs, src-tauri/src/commands/transfer.rsR1-R299)src-tauri/src/lib.rs, src-tauri/src/lib.rsR129-R133)Transfer Utilities and Defaults:
src-tauri/src/transfer/ddl.rs, src-tauri/src/transfer/ddl.rsR1-R358)src-tauri/src/transfer/defaults.rs, src-tauri/src/transfer/defaults.rsR1-R47)Dependency Updates:
Cargo.tomlfor Excel support (rust_xlsxwriter,calamine) and hex encoding. (src-tauri/Cargo.toml, src-tauri/Cargo.tomlR64-R66)Project Structure:
src-tauri/src/commands/mod.rs, [1] [2]transfermodule at the crate root. (src-tauri/src/lib.rs, src-tauri/src/lib.rsL1-R2)