Port worker page to maud

This commit is contained in:
Joscha 2024-05-12 13:31:43 +02:00
parent fb346a75d2
commit aed7498b29
2 changed files with 37 additions and 49 deletions

View file

@ -1,11 +1,11 @@
use std::sync::{Arc, Mutex};
use askama::Template;
use axum::{
extract::State,
http::StatusCode,
response::{IntoResponse, Response},
};
use maud::html;
use sqlx::SqlitePool;
use crate::{
@ -29,16 +29,6 @@ enum Status {
Working { link: LinkRunShort, since: String },
}
#[derive(Template)]
#[template(path = "pages/worker.html")]
struct Page {
base: Base,
name: String,
connected: String,
status: Status,
}
async fn status(status: &WorkerStatus, db: &SqlitePool, base: &Base) -> somehow::Result<Status> {
Ok(match status {
WorkerStatus::Idle => Status::Idle,
@ -68,12 +58,41 @@ pub async fn get_worker_by_name(
};
let base = Base::new(config, Tab::None);
Ok(Page {
name: path.name,
connected: util::format_time(info.first_seen),
status: status(&info.status, &db, &base).await?,
base,
}
.into_response())
let status = status(&info.status, &db, &base).await?;
Ok(base
.html(
&path.name,
html! {},
html! {
h2 { "Worker" }
div .commit-like .worker {
span .title { "worker " (path.name) }
dl {
dt { "Connected:" }
dd { (util::format_time(info.first_seen)) }
@match status {
Status::Idle => {
dt { "Working on:" }
dd { "nothing" }
}
Status::Busy => {
dt { "Working on:" }
dd { "run for another server" }
}
Status::Working { link, since } => {
dt { "Working on:" }
dd { (link.html()) }
dt { "Working since:" }
dd { (since) }
}
}
}
}
},
)
.into_response())
}