diff --git a/src/id_store.rs b/src/id_store.rs index fe3d80c..e255652 100644 --- a/src/id_store.rs +++ b/src/id_store.rs @@ -3,8 +3,8 @@ use std::{ collections::{HashMap, HashSet}, error::Error, fmt::Display, - fs, }; +use tokio::fs; /// Represents the ID that is stored on the Tally #[derive(PartialEq, Eq, Deserialize, Serialize, Hash, Clone, PartialOrd, Ord)] @@ -37,9 +37,9 @@ impl IDStore { } /// Creats a new `IDStore` from a json file - pub fn new_from_json(filepath: &str) -> Result> { - let readed_string = fs::read_to_string(filepath)?; - Ok(serde_json::from_str(&readed_string)?) + pub async fn new_from_json(filepath: &str) -> Result> { + let read_string = fs::read_to_string(filepath).await?; + Ok(serde_json::from_str(&read_string)?) } /// Add a new id for the current day @@ -66,9 +66,9 @@ impl IDStore { } /// Writes the store to a json file - pub fn export_json(&self, filepath: &str) -> Result<(), Box> { - // Serialize it to a JSON string and safe it in filepath file - Ok(fs::write(filepath, serde_json::to_string(&self)?)?) + pub async fn export_json(&self, filepath: &str) -> Result<(), Box> { + fs::write(filepath, serde_json::to_string(&self)?).await?; + Ok(()) } /// Export the store to a csv file. diff --git a/src/main.rs b/src/main.rs index 9c62fce..cd29d46 100644 --- a/src/main.rs +++ b/src/main.rs @@ -58,7 +58,7 @@ async fn main() -> Result<(), Box> { let raw_store = if fs::try_exists(STORE_PATH).await? { info!("Loading data from file"); - IDStore::new_from_json(STORE_PATH)? + IDStore::new_from_json(STORE_PATH).await? } else { info!("No data file found. Creating empty one."); IDStore::new() @@ -77,7 +77,7 @@ async fn main() -> Result<(), Box> { info!("Added new id to current day"); // TODO: trigger the buzzer - if let Err(e) = channel_store.lock().await.export_json(STORE_PATH) { + if let Err(e) = channel_store.lock().await.export_json(STORE_PATH).await { error!("Failed to save id store to file: {}", e); // TODO: How to handle a failure to save ? }