feat(export): move csv and xlsx generation to Rust backend
This commit is contained in:
1 parent
0655d309d8
commit
c736fe372a
14 files changed
+591
-53
No files matched your search
@@ -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())
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
@@ -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,
|
||||
|
||||
Reference in new issue
Block a user