mod cache;
#[cfg(test)]
mod comments_tests;
mod config;
pub mod metrics;
#[cfg(test)]
mod metrics_tests;
#[cfg(test)]
mod pages_tests;
mod published;
mod routes;
mod searches;
#[cfg(test)]
mod tests;
use anyhow::Result;
use axum::Router;
pub use config::Config;
#[cfg(test)]
pub fn router(config: &Config) -> Result<Router> {
Ok(routers(config)?.0)
}
pub fn routers(config: &Config) -> Result<(Router, Router)> {
metrics::listen();
let published = published::Published::open(config)?;
let held = published.clone();
let metrics = metrics::router(move || {
let (versions, routers) = held.in_memory();
metrics::Totals {
versions,
routers,
open_pages: crate::drive::http::open_pages(),
cache_bytes: held.cache_bytes(),
}
});
Ok((routes::router(published, config.max_upload_bytes), metrics))
}