Merge Persist Columns #390

Fixed a few merge conflicts

kernelkind (2):
      initial column storage
      tmp remove DeckAuthor columns
This commit is contained in:
William Casarin
2024-11-13 13:13:41 -08:00
12 changed files with 208 additions and 31 deletions

48
src/storage/columns.rs Normal file
View File

@@ -0,0 +1,48 @@
use tracing::{error, info};
use crate::column::SerializableColumns;
use super::{write_file, DataPath, DataPathType, Directory};
static COLUMNS_FILE: &str = "columns.json";
pub fn save_columns(path: &DataPath, columns: SerializableColumns) {
let serialized_columns = match serde_json::to_string(&columns) {
Ok(s) => s,
Err(e) => {
error!("Could not serialize columns: {}", e);
return;
}
};
let data_path = path.path(DataPathType::Setting);
if let Err(e) = write_file(&data_path, COLUMNS_FILE.to_string(), &serialized_columns) {
error!("Could not write columns to file {}: {}", COLUMNS_FILE, e);
} else {
info!("Successfully wrote columns to {}", COLUMNS_FILE);
}
}
pub fn load_columns(path: &DataPath) -> Option<SerializableColumns> {
let data_path = path.path(DataPathType::Setting);
let columns_string = match Directory::new(data_path).get_file(COLUMNS_FILE.to_owned()) {
Ok(s) => s,
Err(e) => {
error!("Could not read columns from file {}: {}", COLUMNS_FILE, e);
return None;
}
};
match serde_json::from_str::<SerializableColumns>(&columns_string) {
Ok(s) => {
info!("Successfully loaded columns from {}", COLUMNS_FILE);
Some(s)
}
Err(e) => {
error!("Could not deserialize columns: {}", e);
None
}
}
}

View File

@@ -1,6 +1,8 @@
mod columns;
mod file_key_storage;
mod file_storage;
pub use columns::{load_columns, save_columns};
pub use file_key_storage::FileKeyStorage;
pub use file_storage::{delete_file, write_file, DataPath, DataPathType, Directory};