pub mod any;
pub mod default;
pub mod normalize_path;
use crate::app::context::AppContext;
use crate::error::RoadsterResult;
use axum::Router;
use axum_core::extract::FromRef;
#[cfg_attr(test, mockall::automock)]
pub trait Initializer<S>: Send
where
S: Clone + Send + Sync + 'static,
AppContext: FromRef<S>,
{
fn name(&self) -> String;
fn enabled(&self, state: &S) -> bool;
fn priority(&self, state: &S) -> i32;
fn after_router(&self, router: Router, _state: &S) -> RoadsterResult<Router> {
Ok(router)
}
fn before_middleware(&self, router: Router, _state: &S) -> RoadsterResult<Router> {
Ok(router)
}
fn after_middleware(&self, router: Router, _state: &S) -> RoadsterResult<Router> {
Ok(router)
}
fn before_serve(&self, router: Router, _state: &S) -> RoadsterResult<Router> {
Ok(router)
}
}