feat: return real data

This commit is contained in:
itsscb 2025-05-25 21:47:21 +02:00
parent 47b2f04a64
commit 886fddfc41

View File

@ -1,14 +1,37 @@
use axum::response::{Html, IntoResponse}; use axum::{
extract::State,
http::StatusCode,
response::{Html, IntoResponse},
};
use sqlx::SqlitePool;
use std::fmt::Write;
use tracing::{error, instrument};
pub async fn get_scripts() -> impl IntoResponse { #[instrument(skip_all)]
Html( pub async fn get_scripts(State(database): State<SqlitePool>) -> impl IntoResponse {
r##" let scripts = match crate::db::list_scripts(&database).await {
<section id="scripts"> Ok(scripts) => scripts,
<ul> Err(e) => {
<li>Script1</li> error!(err = e, "list_scripts");
<li>Script2</li> return Err(StatusCode::INTERNAL_SERVER_ERROR);
</ul> }
<button hx-get="/scripts" hx-swap="outerHTML" hx-target="#scripts">Refresh</button> };
</section>"##,
) let content = scripts.iter().fold(String::new(), |mut acc, x| {
if let Err(e) = write!(acc, "<li>{} [", x.1.name()) {
error!(err = e.to_string(), script=?x ,"failed to write name");
return String::new();
}
if let Err(e) = write!(acc, "{}]</li>", x.0) {
error!(err = e.to_string(), script=?x ,"failed to write id");
return String::new();
}
acc
});
let output = format!(
r##"<section id="scripts"><ul>{content}</ul><button hx-get="/scripts" hx-swap="outerHTML" hx-target="#scripts">Refresh</button></section>"##
);
Ok(Html(output))
} }