aboutsummaryrefslogtreecommitdiff
path: root/server/src/routes/ui/admin
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/routes/ui/admin')
-rw-r--r--server/src/routes/ui/admin/mod.rs24
1 files changed, 23 insertions, 1 deletions
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<Database>,
+) -> MyResult<DynLayoutPage<'static>> {
+ 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,