feat(export): move csv and xlsx generation to Rust backend

This commit is contained in:
t8y2 committed 2026-05-22 14:56:40 +08:00
1 parent 0655d309d8
commit c736fe372a
14 files changed
+591 -53

No files matched your search

+17
View File
@@ -0,0 +1,17 @@
use dbx_core::csv_export::format_csv;
use serde::Deserialize;
use serde_json::Value;
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct QueryResultCsvExportRequest {
pub file_path: String,
pub columns: Vec<String>,
pub rows: Vec<Vec<Value>>,
}
#[tauri::command]
pub fn export_query_result_csv(request: QueryResultCsvExportRequest) -> Result<(), String> {
let csv = format_csv(&request.columns, &request.rows);
std::fs::write(&request.file_path, format!("\u{FEFF}{csv}")).map_err(|err| err.to_string())
}
+1
View File
@@ -4,6 +4,7 @@ pub mod app_settings;
pub mod connection;
#[allow(dead_code, unused_imports)]
mod connection_secrets;
pub mod csv_export;
pub mod database_export;
pub mod deep_link;
pub mod external_sql;
+22
View File
@@ -0,0 +1,22 @@
use dbx_core::xlsx_export::{build_xlsx_workbook, XlsxWorksheetData};
use serde::Deserialize;
use serde_json::Value;
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct QueryResultXlsxExportRequest {
pub file_path: String,
pub sheet_name: Option<String>,
pub columns: Vec<String>,
pub rows: Vec<Vec<Value>>,
}
#[tauri::command]
pub fn export_query_result_xlsx(request: QueryResultXlsxExportRequest) -> Result<(), String> {
let workbook = build_xlsx_workbook(&XlsxWorksheetData {
sheet_name: request.sheet_name,
columns: request.columns,
rows: request.rows,
})?;
std::fs::write(&request.file_path, workbook).map_err(|err| err.to_string())
}
+1
View File
@@ -337,6 +337,7 @@ pub fn run() {
commands::transfer::cancel_transfer,
commands::database_export::export_database_sql,
commands::database_export::cancel_database_export,
commands::csv_export::export_query_result_csv,
commands::xlsx_export::export_query_result_xlsx,
commands::agents::list_installed_agents,
commands::agents::list_installed_agents_local,