diff options
author | metamuffin <metamuffin@disroot.org> | 2024-05-12 11:46:16 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-05-12 11:46:16 +0200 |
commit | cfaae9067c151d8db49b0fcbcaff04bc31176bd2 (patch) | |
tree | 4b2727167d58f58c06384b9302404b1d2f7d54e8 /server/src | |
parent | bf0e9de8eb801ef58a3820b663d30bb55762970e (diff) | |
download | jellything-cfaae9067c151d8db49b0fcbcaff04bc31176bd2.tar jellything-cfaae9067c151d8db49b0fcbcaff04bc31176bd2.tar.bz2 jellything-cfaae9067c151d8db49b0fcbcaff04bc31176bd2.tar.zst |
mostly ignore errors when importing
Diffstat (limited to 'server/src')
-rw-r--r-- | server/src/routes/ui/admin/mod.rs | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/server/src/routes/ui/admin/mod.rs b/server/src/routes/ui/admin/mod.rs index 00a68ac..540ac72 100644 --- a/server/src/routes/ui/admin/mod.rs +++ b/server/src/routes/ui/admin/mod.rs @@ -31,7 +31,7 @@ use jellybase::{ federation::Federation, CONF, }; -use jellyimport::{import, is_importing}; +use jellyimport::{import, is_importing, IMPORT_ERRORS}; use markup::DynRender; use rand::Rng; use rocket::{form::Form, get, post, FromForm, State}; @@ -40,14 +40,14 @@ use tokio::sync::Semaphore; use user::rocket_uri_macro_r_admin_users; #[get("/admin/dashboard")] -pub fn r_admin_dashboard( +pub async fn r_admin_dashboard( _session: AdminSession, database: &State<DataAcid>, ) -> MyResult<DynLayoutPage<'static>> { - admin_dashboard(database, None) + admin_dashboard(database, None).await } -pub fn admin_dashboard<'a>( +pub async fn admin_dashboard<'a>( database: &DataAcid, flash: Option<MyResult<String>>, ) -> MyResult<DynLayoutPage<'a>> { @@ -66,12 +66,22 @@ pub fn admin_dashboard<'a>( }; let flash = flash.map(|f| f.map_err(|e| format!("{e:?}"))); + let last_import_err = IMPORT_ERRORS.read().await.to_owned(); + let database = database.to_owned(); Ok(LayoutPage { title: "Admin Dashboard".to_string(), content: markup::new! { h1 { "Admin Panel" } @FlashDisplay { flash: flash.clone() } + @if !last_import_err.is_empty() { + section.message.error { + p.error {"The last import resulted in at least one error:"} + ol { @for e in &last_import_err { + li.error { pre.error { @e } } + }} + } + } ul { li{a[href=uri!(r_admin_log(true))] { "Server Log (Warnings only)" }} li{a[href=uri!(r_admin_log(false))] { "Server Log (Full) " }} @@ -119,14 +129,14 @@ pub fn admin_dashboard<'a>( } #[post("/admin/generate_invite")] -pub fn r_admin_invite( +pub async fn r_admin_invite( _session: AdminSession, database: &State<DataAcid>, ) -> MyResult<DynLayoutPage<'static>> { let i = format!("{}", rand::thread_rng().gen::<u128>()); T_INVITE.insert(&database, &*i, ())?; - admin_dashboard(database, Some(Ok(format!("Invite: {}", i)))) + admin_dashboard(database, Some(Ok(format!("Invite: {}", i)))).await } #[derive(FromForm)] @@ -135,7 +145,7 @@ pub struct DeleteInvite { } #[post("/admin/remove_invite", data = "<form>")] -pub fn r_admin_remove_invite( +pub async fn r_admin_remove_invite( session: AdminSession, database: &State<DataAcid>, form: Form<DeleteInvite>, @@ -145,7 +155,7 @@ pub fn r_admin_remove_invite( .remove(&database, form.invite.as_str())? .ok_or(anyhow!("invite did not exist"))?; - admin_dashboard(database, Some(Ok("Invite invalidated".into()))) + admin_dashboard(database, Some(Ok("Invite invalidated".into()))).await } #[post("/admin/import")] @@ -164,6 +174,7 @@ pub async fn r_admin_import( .map(|_| format!("Import successful; took {:?}", t.elapsed())), ), ) + .await } #[post("/admin/delete_cache")] @@ -182,6 +193,7 @@ pub async fn r_admin_delete_cache( .map(|_| format!("Cache deleted; took {:?}", t.elapsed())), ), ) + .await } static SEM_TRANSCODING: Semaphore = Semaphore::const_new(1); @@ -227,6 +239,7 @@ pub async fn r_admin_transcode_posters( t.elapsed() ))), ) + .await } fn db_stats(db: &DataAcid) -> anyhow::Result<DynRender> { @@ -244,7 +257,7 @@ fn db_stats(db: &DataAcid) -> anyhow::Result<DynRender> { Ok(markup::new! { h3 { "Key-Value-Store Statistics" } - table { + table.border { tbody { tr { th { "table name" } |