Compare commits
1 Commits
main
...
break-data
Author | SHA1 | Date |
---|---|---|
~erin | 64bb346a11 |
|
@ -1,7 +1,10 @@
|
|||
extern crate log;
|
||||
use crate::user::User;
|
||||
use once_cell::sync::Lazy;
|
||||
use std::sync::Mutex;
|
||||
|
||||
type MyErrorType = Box<dyn std::error::Error>;
|
||||
static DB: Lazy<Mutex<sled::Db>> = 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<User>) {
|
||||
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<User>) {
|
|||
|
||||
// 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<User> {
|
||||
let db: sled::Db = sled::open("users_db").unwrap();
|
||||
let db = DB.lock().unwrap();
|
||||
let mut users: Vec<User> = 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<User> {
|
|||
|
||||
// read one user from the database
|
||||
pub fn db_read_user(user: &str) -> std::result::Result<Option<User>, 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)?;
|
||||
|
|
Loading…
Reference in New Issue