aboutsummaryrefslogtreecommitdiff
path: root/server/src/main.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-01-20 00:50:20 +0100
committermetamuffin <metamuffin@disroot.org>2024-01-20 00:50:20 +0100
commit46c251655db7bb3d9aa814b1a5dde85336b0b9b1 (patch)
treeab0696f2c92e8854ce6aa0737877cc15184bd8b6 /server/src/main.rs
parent1c37d32a0985ff7390313833345b9299f9f0b196 (diff)
downloadjellything-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.rs31
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")
}