add read_yaml. use buffered reader/writer

This commit is contained in:
Thien Tran 2025-05-26 19:03:10 +08:00 committed by Louis
parent d01cbe44ae
commit 5803fcdb99
No known key found for this signature in database
GPG Key ID: 44FA9F4D33C37DE2
2 changed files with 21 additions and 2 deletions

View File

@ -94,7 +94,25 @@ pub fn write_yaml(
jan_data_folder.to_string_lossy(), jan_data_folder.to_string_lossy(),
)); ));
} }
let mut file = fs::File::create(&save_path).map_err(|e| e.to_string())?; let file = fs::File::create(&save_path).map_err(|e| e.to_string())?;
serde_yaml::to_writer(&mut file, &data).map_err(|e| e.to_string())?; let mut writer = std::io::BufWriter::new(file);
serde_yaml::to_writer(&mut writer, &data).map_err(|e| e.to_string())?;
Ok(()) Ok(())
} }
#[tauri::command]
pub fn read_yaml(app: tauri::AppHandle, path: &str) -> Result<serde_json::Value, String> {
let jan_data_folder = get_jan_data_folder_path(app.clone());
let path = normalize_path(&jan_data_folder.join(path));
if !path.starts_with(&jan_data_folder) {
return Err(format!(
"Error: path {} is not under jan_data_folder {}",
path.to_string_lossy(),
jan_data_folder.to_string_lossy(),
));
}
let file = fs::File::open(&path).map_err(|e| e.to_string())?;
let reader = std::io::BufReader::new(file);
let data: serde_json::Value = serde_yaml::from_reader(reader).map_err(|e| e.to_string())?;
Ok(data)
}

View File

@ -81,6 +81,7 @@ pub fn run() {
core::threads::modify_thread_assistant, core::threads::modify_thread_assistant,
// generic utils // generic utils
core::utils::write_yaml, core::utils::write_yaml,
core::utils::read_yaml,
// Download // Download
core::utils::download::download_files, core::utils::download::download_files,
core::utils::download::cancel_download_task, core::utils::download::cancel_download_task,