aboutsummaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-01-30 13:46:29 +0100
committermetamuffin <metamuffin@disroot.org>2025-01-30 13:46:29 +0100
commit570f24c99af8c9cd1b9050564c32adb85e2c9c0f (patch)
treed7513a4d0bc8a6813f2b567054fea1c5b207f230 /server
parenta5a73dc868c714391e4da4a53b4e4993fc77372e (diff)
downloadjellything-570f24c99af8c9cd1b9050564c32adb85e2c9c0f.tar
jellything-570f24c99af8c9cd1b9050564c32adb85e2c9c0f.tar.bz2
jellything-570f24c99af8c9cd1b9050564c32adb85e2c9c0f.tar.zst
channel.info.json
Diffstat (limited to 'server')
-rw-r--r--server/src/routes/ui/admin/mod.rs38
1 files changed, 22 insertions, 16 deletions
diff --git a/server/src/routes/ui/admin/mod.rs b/server/src/routes/ui/admin/mod.rs
index 463319a..5c2c48f 100644
--- a/server/src/routes/ui/admin/mod.rs
+++ b/server/src/routes/ui/admin/mod.rs
@@ -51,10 +51,12 @@ pub async fn admin_dashboard<'a>(
@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 } }
- }}
+ details {
+ summary { p.error { @format!("The last import resulted in {} errors:", last_import_err.len()) } }
+ ol { @for e in &last_import_err {
+ li.error { pre.error { @e } }
+ }}
+ }
}
}
ul {
@@ -68,12 +70,15 @@ pub async fn admin_dashboard<'a>(
@if is_transcoding() {
section.message { p.warn { "Currently transcoding posters." } }
}
- form[method="POST", action=uri!(r_admin_import(true))] {
+ form[method="POST", action=uri!(r_admin_import(true, false))] {
input[type="submit", disabled=is_importing(), value="Start incremental import"];
}
- form[method="POST", action=uri!(r_admin_import(false))] {
+ form[method="POST", action=uri!(r_admin_import(false, false))] {
input[type="submit", disabled=is_importing(), value="Start full import"];
}
+ form[method="POST", action=uri!(r_admin_import(false, true))] {
+ input[type="submit", disabled=is_importing(), value="Clear all nodes"];
+ }
form[method="POST", action=uri!(r_admin_transcode_posters())] {
input[type="submit", disabled=is_transcoding(), value="Transcode all posters with low resolution"];
}
@@ -134,24 +139,25 @@ pub async fn r_admin_remove_invite(
admin_dashboard(database, Some(Ok("Invite invalidated".into()))).await
}
-#[post("/admin/import?<incremental>")]
+#[post("/admin/import?<incremental>&<nuke>")]
pub async fn r_admin_import(
session: AdminSession,
database: &State<Database>,
_federation: &State<Federation>,
incremental: bool,
+ nuke: bool,
) -> MyResult<DynLayoutPage<'static>> {
drop(session);
let t = Instant::now();
- let r = import_wrap((*database).clone(), incremental).await;
- admin_dashboard(
- database,
- Some(
- r.map_err(|e| e.into())
- .map(|_| format!("Import successful; took {:?}", t.elapsed())),
- ),
- )
- .await
+ let flash = if nuke {
+ database.clear_nodes()?;
+ Ok(format!("All nodes cleared."))
+ } else {
+ let r = import_wrap((*database).clone(), incremental).await;
+ r.map_err(|e| e.into())
+ .map(|_| format!("Import successful; took {:?}", t.elapsed()))
+ };
+ admin_dashboard(database, Some(flash)).await
}
#[post("/admin/delete_cache")]