Compare commits
1 Commits
main
...
break-data
Author | SHA1 | Date |
---|---|---|
~erin | 64bb346a11 |
|
@ -1,7 +1,10 @@
|
||||||
extern crate log;
|
extern crate log;
|
||||||
use crate::user::User;
|
use crate::user::User;
|
||||||
|
use once_cell::sync::Lazy;
|
||||||
|
use std::sync::Mutex;
|
||||||
|
|
||||||
type MyErrorType = Box<dyn std::error::Error>;
|
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
|
// add a user to the database
|
||||||
pub fn db_add(user: &User) {
|
pub fn db_add(user: &User) {
|
||||||
|
@ -13,7 +16,7 @@ pub fn db_add(user: &User) {
|
||||||
|
|
||||||
// write all changed users to database
|
// write all changed users to database
|
||||||
pub fn db_write(users_list: &Vec<User>) {
|
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 {
|
for i in users_list {
|
||||||
let bytes = bincode::serialize(&i).unwrap();
|
let bytes = bincode::serialize(&i).unwrap();
|
||||||
db.insert(&i.name, bytes).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
|
// remove a user from the database
|
||||||
pub fn db_remove(user: &User) {
|
pub fn db_remove(user: &User) {
|
||||||
let db: sled::Db = sled::open("users_db").unwrap();
|
let db = DB.lock().unwrap();
|
||||||
db.remove(&user.name);
|
db.remove(&user.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
// read all users from the database
|
// read all users from the database
|
||||||
pub fn db_read() -> Vec<User> {
|
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();
|
let mut users: Vec<User> = Vec::new();
|
||||||
for (_, bytes) in db.iter().filter_map(|r| r.ok()) {
|
for (_, bytes) in db.iter().filter_map(|r| r.ok()) {
|
||||||
let read_user: User = bincode::deserialize(&bytes).unwrap();
|
let read_user: User = bincode::deserialize(&bytes).unwrap();
|
||||||
|
@ -42,7 +45,7 @@ pub fn db_read() -> Vec<User> {
|
||||||
|
|
||||||
// read one user from the database
|
// read one user from the database
|
||||||
pub fn db_read_user(user: &str) -> std::result::Result<Option<User>, MyErrorType> {
|
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)?;
|
let entry = db.get(user)?;
|
||||||
if let Some(user_entry) = entry {
|
if let Some(user_entry) = entry {
|
||||||
let read_user: User = bincode::deserialize(&user_entry)?;
|
let read_user: User = bincode::deserialize(&user_entry)?;
|
||||||
|
|
Loading…
Reference in New Issue