generated from alecodes/base-template
feat: add basic htmx example
This commit is contained in:
parent
17bf419074
commit
ffca6175c0
6 changed files with 80 additions and 25 deletions
|
|
@ -1,4 +1,5 @@
|
|||
use axum::{extract::State, response::Html, routing::get, Router};
|
||||
use axum_htmx::HxRequest;
|
||||
use chrono::Utc;
|
||||
use minijinja::context;
|
||||
use serde::Serialize;
|
||||
|
|
@ -22,7 +23,11 @@ struct ExampleRow {
|
|||
pub current_timestamp: chrono::DateTime<Utc>,
|
||||
}
|
||||
|
||||
async fn handler_home(State(state): State<AppState>, mut tx: Tx) -> ResultTemplate {
|
||||
async fn handler_home(
|
||||
State(state): State<AppState>,
|
||||
HxRequest(hx_request): HxRequest,
|
||||
mut tx: Tx,
|
||||
) -> ResultTemplate {
|
||||
let template = state.tmpl_env.get_template("index.html")?;
|
||||
|
||||
let rows = sqlx::query_as::<_, ExampleRow>("select 'Postgres' as database, setting as version, current_database(), current_user, current_timestamp from pg_settings where name = 'server_version'")
|
||||
|
|
@ -31,7 +36,13 @@ async fn handler_home(State(state): State<AppState>, mut tx: Tx) -> ResultTempla
|
|||
|
||||
println!("{:?}", rows);
|
||||
|
||||
let content = template.render(context!(rows => rows))?;
|
||||
let content = if hx_request {
|
||||
template
|
||||
.eval_to_state(context!(rows => rows))?
|
||||
.render_block("htmx")?
|
||||
} else {
|
||||
template.render(context!(rows => rows))?
|
||||
};
|
||||
|
||||
Ok(Html(content))
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue