diff options
author | metamuffin <metamuffin@disroot.org> | 2024-01-20 00:50:20 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-01-20 00:50:20 +0100 |
commit | 46c251655db7bb3d9aa814b1a5dde85336b0b9b1 (patch) | |
tree | ab0696f2c92e8854ce6aa0737877cc15184bd8b6 /server/src/main.rs | |
parent | 1c37d32a0985ff7390313833345b9299f9f0b196 (diff) | |
download | jellything-46c251655db7bb3d9aa814b1a5dde85336b0b9b1.tar jellything-46c251655db7bb3d9aa814b1a5dde85336b0b9b1.tar.bz2 jellything-46c251655db7bb3d9aa814b1a5dde85336b0b9b1.tar.zst |
replace sled with redb
Diffstat (limited to 'server/src/main.rs')
-rw-r--r-- | server/src/main.rs | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/server/src/main.rs b/server/src/main.rs index acb8c87..6862a98 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -8,10 +8,14 @@ #![feature(let_chains)] use crate::routes::ui::{account::hash_password, admin::log::enable_logging}; -use database::Database; -use jellybase::{federation::Federation, CONF}; +use database::DataAcid; +use jellybase::{ + database::{ReadableTable, Ser, T_USER}, + federation::Federation, + CONF, +}; use jellycommon::user::{PermissionSet, Theme, User}; -use log::{error, warn, info}; +use log::{error, info, warn}; use routes::build_rocket; use tokio::fs::create_dir_all; @@ -25,16 +29,20 @@ async fn main() { log::warn!("authentification bypass enabled"); create_dir_all(&CONF.cache_path).await.unwrap(); - let database = Database::open(&CONF.database_path).unwrap(); + let database = DataAcid::open(&CONF.database_path).unwrap(); let federation = Federation::initialize(); if let Some(username) = &CONF.admin_username && let Some(password) = &CONF.admin_password { - database - .user - .fetch_and_update(&username, |admin| { - Some(User { + let txn = database.begin_write().unwrap(); + let mut users = txn.open_table(T_USER).unwrap(); + + let admin = users.get(username.as_str()).unwrap().map(|x| x.value().0); + users + .insert( + username.as_str(), + Ser(User { admin: true, name: username.clone(), password: hash_password(&username, &password), @@ -46,9 +54,12 @@ async fn main() { theme: Theme::Dark, permissions: PermissionSet::default(), }) - }) - }) + }), + ) .unwrap(); + + drop(users); + txn.commit().unwrap(); } else { info!("admin account disabled") } |