use axum::middleware; use axum::routing::get; use axum::Router; use sqlx::SqlitePool; use tokio::sync::broadcast; use crate::api; #[derive(Clone)] pub struct AppState { pub pool: SqlitePool, pub api_key: String, /// Send `Some(feed_id)` for single-feed refresh, `None` for all feeds. pub refresh_trigger: Option>>, } pub fn router(state: AppState) -> Router { let v1 = api::miniflux::v1_router().layer(middleware::from_fn_with_state( state.clone(), api::miniflux::auth::auth_middleware, )); Router::new() .nest("/v1", v1) // Health/readiness endpoints (unauthenticated, root-level) .route("/healthcheck", get(api::miniflux::handlers::healthcheck)) .route("/liveness", get(api::miniflux::handlers::healthcheck)) .route("/healthz", get(api::miniflux::handlers::healthcheck)) .route("/readiness", get(api::miniflux::handlers::healthcheck)) .route("/readyz", get(api::miniflux::handlers::healthcheck)) .with_state(state) }