From 64bb346a11a3bef631e182de66028de588c2a61a Mon Sep 17 00:00:00 2001 From: Erin Nova Date: Fri, 23 Jul 2021 14:06:26 -0400 Subject: [PATCH] Try and use Mutex thing for db --- src/file_io.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/file_io.rs b/src/file_io.rs index 8a740c2..f3fc8ff 100644 --- a/src/file_io.rs +++ b/src/file_io.rs @@ -1,7 +1,10 @@ extern crate log; use crate::user::User; +use once_cell::sync::Lazy; +use std::sync::Mutex; type MyErrorType = Box; +static DB: Lazy> = Lazy::new(|| Mutex::new(sled::Db::open("users_db").unwrap())); // add a user to the database pub fn db_add(user: &User) { @@ -13,7 +16,7 @@ pub fn db_add(user: &User) { // write all changed users to database pub fn db_write(users_list: &Vec) { - let db: sled::Db = sled::open("users_db").unwrap(); + let db = DB.lock().unwrap(); for i in users_list { let bytes = bincode::serialize(&i).unwrap(); db.insert(&i.name, bytes).unwrap(); @@ -24,13 +27,13 @@ pub fn db_write(users_list: &Vec) { // remove a user from the database pub fn db_remove(user: &User) { - let db: sled::Db = sled::open("users_db").unwrap(); + let db = DB.lock().unwrap(); db.remove(&user.name); } // read all users from the database pub fn db_read() -> Vec { - let db: sled::Db = sled::open("users_db").unwrap(); + let db = DB.lock().unwrap(); let mut users: Vec = Vec::new(); for (_, bytes) in db.iter().filter_map(|r| r.ok()) { let read_user: User = bincode::deserialize(&bytes).unwrap(); @@ -42,7 +45,7 @@ pub fn db_read() -> Vec { // read one user from the database pub fn db_read_user(user: &str) -> std::result::Result, MyErrorType> { - let db: sled::Db = sled::open("users_db")?; + let db = DB.lock().unwrap(); let entry = db.get(user)?; if let Some(user_entry) = entry { let read_user: User = bincode::deserialize(&user_entry)?;