From e3daa6159f2b2048c2c07d349488e117e50285dd Mon Sep 17 00:00:00 2001 From: metamuffin Date: Sun, 2 Feb 2025 23:16:59 +0100 Subject: restore search functionality --- server/src/routes/ui/admin/mod.rs | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'server/src/routes/ui/admin/mod.rs') diff --git a/server/src/routes/ui/admin/mod.rs b/server/src/routes/ui/admin/mod.rs index 50faa2e..62a06bc 100644 --- a/server/src/routes/ui/admin/mod.rs +++ b/server/src/routes/ui/admin/mod.rs @@ -26,7 +26,7 @@ use markup::DynRender; use rand::Rng; use rocket::{form::Form, get, post, FromForm, State}; use std::time::Instant; -use tokio::sync::Semaphore; +use tokio::{sync::Semaphore, task::spawn_blocking}; use user::rocket_uri_macro_r_admin_users; #[get("/admin/dashboard")] @@ -85,6 +85,9 @@ pub async fn admin_dashboard<'a>( form[method="POST", action=uri!(r_admin_transcode_posters())] { input[type="submit", disabled=is_transcoding(), value="Transcode all posters with low resolution"]; } + form[method="POST", action=uri!(r_admin_update_search())] { + input[type="submit", value="Update full-text search index"]; + } form[method="POST", action=uri!(r_admin_delete_cache())] { input.danger[type="submit", value="Delete Cache"]; } @@ -163,6 +166,25 @@ pub async fn r_admin_import( admin_dashboard(database, Some(flash)).await } +#[post("/admin/update_search")] +pub async fn r_admin_update_search( + _session: AdminSession, + database: &State, +) -> MyResult> { + let db2 = (*database).clone(); + let r = spawn_blocking(move || db2.search_create_index()) + .await + .unwrap(); + admin_dashboard( + &database, + Some( + r.map_err(|e| e.into()) + .map(|_| format!("Search index updated")), + ), + ) + .await +} + #[post("/admin/delete_cache")] pub async fn r_admin_delete_cache( session: AdminSession, -- cgit v1.2.3-70-g09d2