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/routes/ui/admin/mod.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/routes/ui/admin/mod.rs')
-rw-r--r-- | server/src/routes/ui/admin/mod.rs | 45 |
1 files changed, 30 insertions, 15 deletions
diff --git a/server/src/routes/ui/admin/mod.rs b/server/src/routes/ui/admin/mod.rs index b976192..60ed416 100644 --- a/server/src/routes/ui/admin/mod.rs +++ b/server/src/routes/ui/admin/mod.rs @@ -8,7 +8,7 @@ pub mod user; use super::account::session::AdminSession; use crate::{ - database::Database, + database::DataAcid, routes::ui::{ admin::log::rocket_uri_macro_r_admin_log, error::MyResult, @@ -17,7 +17,11 @@ use crate::{ uri, }; use anyhow::anyhow; -use jellybase::{federation::Federation, CONF}; +use jellybase::{ + database::{ReadableTable, TableExt, T_INVITE}, + federation::Federation, + CONF, +}; use jellyimport::import; use rand::Rng; use rocket::{form::Form, get, post, FromForm, State}; @@ -27,16 +31,28 @@ use user::rocket_uri_macro_r_admin_users; #[get("/admin/dashboard")] pub fn r_admin_dashboard( _session: AdminSession, - database: &State<Database>, + database: &State<DataAcid>, ) -> MyResult<DynLayoutPage<'static>> { admin_dashboard(database, None) } pub fn admin_dashboard<'a>( - database: &Database, + database: &DataAcid, flash: Option<MyResult<String>>, ) -> MyResult<DynLayoutPage<'a>> { - let invites = database.invite.iter().collect::<Result<Vec<_>, _>>()?; + let invites = { + let txn = database.begin_read()?; + let table = txn.open_table(T_INVITE)?; + let i = table + .iter()? + .map(|a| { + let (x, _) = a.unwrap(); + x.value().to_owned() + }) + .collect::<Vec<_>>(); + drop(table); + i + }; let flash = flash.map(|f| f.map_err(|e| format!("{e:?}"))); Ok(LayoutPage { @@ -64,8 +80,8 @@ pub fn admin_dashboard<'a>( ul { @for t in &invites { li { form[method="POST", action=uri!(r_admin_remove_invite())] { - span { @t.0 } - input[type="text", name="invite", value=&t.0, hidden]; + span { @t } + input[type="text", name="invite", value=&t, hidden]; input[type="submit", value="Invalidate"]; } } @@ -78,10 +94,10 @@ pub fn admin_dashboard<'a>( #[post("/admin/generate_invite")] pub fn r_admin_invite( _session: AdminSession, - database: &State<Database>, + database: &State<DataAcid>, ) -> MyResult<DynLayoutPage<'static>> { let i = format!("{}", rand::thread_rng().gen::<u128>()); - database.invite.insert(&i, &())?; + T_INVITE.insert(&database, &*i, ())?; admin_dashboard(database, Some(Ok(format!("Invite: {}", i)))) } @@ -94,13 +110,12 @@ pub struct DeleteInvite { #[post("/admin/remove_invite", data = "<form>")] pub fn r_admin_remove_invite( session: AdminSession, - database: &State<Database>, + database: &State<DataAcid>, form: Form<DeleteInvite>, ) -> MyResult<DynLayoutPage<'static>> { drop(session); - database - .invite - .remove(&form.invite)? + T_INVITE + .remove(&database, form.invite.as_str())? .ok_or(anyhow!("invite did not exist"))?; admin_dashboard(database, Some(Ok("Invite invalidated".into()))) @@ -109,7 +124,7 @@ pub fn r_admin_remove_invite( #[post("/admin/import")] pub async fn r_admin_import( session: AdminSession, - database: &State<Database>, + database: &State<DataAcid>, federation: &State<Federation>, ) -> MyResult<DynLayoutPage<'static>> { drop(session); @@ -127,7 +142,7 @@ pub async fn r_admin_import( #[post("/admin/delete_cache")] pub async fn r_admin_delete_cache( session: AdminSession, - database: &State<Database>, + database: &State<DataAcid>, ) -> MyResult<DynLayoutPage<'static>> { drop(session); let t = Instant::now(); |