use maud::{html, Markup};
use crate::components::page::page;
use dbui_core::cfg::APPNAME;
use dbui_core::ctx::RequestContext;
use dbui_core::database::results::ResultSet;
use dbui_core::result::Result;
pub fn results(ctx: &RequestContext, sql: &str, result: &ResultSet) -> Result<Markup> {
let content = html! {
div.uk-section.uk-section-small {
div.uk-container {
div.uk-text-center {
h1.uk-heading-hero {
"SQL Results"
}
div.uk-text-lead.uk-text-left {
pre { (sql) }
}
div.uk-margin-top {
div.uk-card.uk-card-body.uk-card-default {
table.uk-table.uk-table-divider.uk-table-hover.uk-text-left {
thead {
tr {
@for c in result.columns() {
th { (c.name()) }
}
}
}
tbody {
@if result.data().is_empty() {
tr {
td colspan=(result.columns().len()) { "No rows returned" }
}
}
@for row in result.data() {
tr {
@for cell in row {
td {
(cell.as_ref().unwrap_or(&"∅".to_string()))
}
}
}
}
}
}
}
}
}
}
}
};
Ok(html! {
(page(ctx, APPNAME, content)?)
})
}