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