diff options
Diffstat (limited to 'server/src/routes/ui/admin')
-rw-r--r-- | server/src/routes/ui/admin/mod.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/server/src/routes/ui/admin/mod.rs b/server/src/routes/ui/admin/mod.rs index f779700..c6a89ca 100644 --- a/server/src/routes/ui/admin/mod.rs +++ b/server/src/routes/ui/admin/mod.rs @@ -18,6 +18,7 @@ use crate::{ uri, }; use anyhow::anyhow; +use jellybase::CONF; use rand::Rng; use rocket::{form::Form, get, post, FromForm, State}; use std::time::Instant; @@ -52,6 +53,9 @@ pub fn admin_dashboard<'a>( form[method="POST", action=uri!(r_admin_import())] { input[type="submit", value="(Re-)Import Library"]; } + form[method="POST", action=uri!(r_admin_delete_cache())] { + input[type="submit", value="Delete Cache"]; + } h2 { "Invitations" } form[method="POST", action=uri!(r_admin_invite())] { input[type="submit", value="Generate new invite code"]; @@ -146,3 +150,21 @@ pub async fn r_admin_import( ), ) } + +#[post("/admin/delete_cache")] +pub async fn r_admin_delete_cache( + session: AdminSession, + database: &State<Database>, +) -> MyResult<DynLayoutPage<'static>> { + drop(session); + let t = Instant::now(); + let r = tokio::fs::remove_dir_all(&CONF.cache_path).await; + tokio::fs::create_dir(&CONF.cache_path).await?; + admin_dashboard( + &database, + Some( + r.map_err(|e| e.into()) + .map(|_| format!("Cache deleted; took {:?}", t.elapsed())), + ), + ) +} |