Add admin button to update repo

This commit is contained in:
Joscha 2023-08-17 18:19:41 +02:00
parent 6cf7a0b586
commit 4f2b0a0b88
9 changed files with 69 additions and 15 deletions

View file

@ -1 +1,2 @@
pub mod queue;
pub mod repo;

View file

@ -0,0 +1,29 @@
use std::sync::Arc;
use axum::{
extract::State,
response::{IntoResponse, Redirect},
};
use log::info;
use tokio::sync::mpsc;
use crate::{
config::ServerConfig,
server::web::{
base::Base,
paths::{PathAdminRepoUpdate, PathIndex},
},
somehow,
};
pub async fn post_admin_repo_update(
_path: PathAdminRepoUpdate,
State(config): State<&'static ServerConfig>,
State(recurring_tx): State<Arc<mpsc::UnboundedSender<()>>>,
) -> somehow::Result<impl IntoResponse> {
let _ = recurring_tx.send(());
info!("Admin updated repo");
let link = Base::link_with_config(config, PathIndex {});
Ok(Redirect::to(&link.to_string()))
}

View file

@ -6,9 +6,9 @@ use sqlx::SqlitePool;
use crate::{
config::ServerConfig,
server::web::{
base::{Base, Tab},
base::{Base, Link, Tab},
link::LinkCommit,
paths::PathIndex,
paths::{PathAdminRepoUpdate, PathIndex},
},
somehow,
};
@ -22,7 +22,9 @@ struct Ref {
#[derive(Template)]
#[template(path = "pages/index.html")]
struct IndexTemplate {
link_admin_repo_update: Link,
base: Base,
tracked_refs: Vec<Ref>,
untracked_refs: Vec<Ref>,
}
@ -62,7 +64,9 @@ pub async fn get_index(
}
Ok(IndexTemplate {
link_admin_repo_update: base.link(PathAdminRepoUpdate {}),
base: Base::new(config, Tab::Index),
tracked_refs,
untracked_refs,
})

View file

@ -53,6 +53,10 @@ pub struct PathWorkerByName {
// Admin actions //
///////////////////
#[derive(Deserialize, TypedPath)]
#[typed_path("/admin/repo/update")]
pub struct PathAdminRepoUpdate {}
#[derive(Deserialize, TypedPath)]
#[typed_path("/admin/queue/add")]
pub struct PathAdminQueueAdd {}