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,6 +1,7 @@
|
|||
#![allow(unused)]
|
||||
#![allow(dead_code)]
|
||||
|
||||
use axum_htmx::AutoVaryLayer;
|
||||
use compendium::{router, AppState, Error, Link, Result, Tx};
|
||||
use minijinja::{Environment, Value};
|
||||
use sqlx::postgres::PgPoolOptions;
|
||||
|
|
@ -78,6 +79,7 @@ async fn main() -> Result<()> {
|
|||
let app = router::new()
|
||||
.layer(TraceLayer::new_for_http().on_request(()))
|
||||
.layer(tx_layer)
|
||||
.layer(AutoVaryLayer)
|
||||
.with_state(AppState::new(tmpl_env, tx_state));
|
||||
|
||||
// Add hot reload only on dev mode
|
||||
|
|
|
|||
|
|
@ -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