use axum::{
Router,
routing::{get, post},
};
use super::handlers::{
ObserverState, RuntimeHealthState, create_observer, delete_observer, disable_observer,
enable_observer, get_observer, get_observer_stats, get_runtime_health, list_observer_logs,
list_observers, reload_observers, update_observer,
};
pub fn observer_routes(state: ObserverState) -> Router {
Router::new()
.route("/", get(list_observers).post(create_observer))
.route("/stats", get(get_all_stats))
.route("/logs", get(list_all_logs))
.route("/:id", get(get_observer).patch(update_observer).delete(delete_observer))
.route("/:id/enable", post(enable_observer))
.route("/:id/disable", post(disable_observer))
.route("/:id/stats", get(get_single_stats))
.route("/:id/logs", get(list_single_logs))
.with_state(state)
}
async fn get_all_stats(
state: axum::extract::State<ObserverState>,
) -> impl axum::response::IntoResponse {
get_observer_stats(state, None).await
}
async fn get_single_stats(
state: axum::extract::State<ObserverState>,
path: axum::extract::Path<uuid::Uuid>,
) -> impl axum::response::IntoResponse {
get_observer_stats(state, Some(path)).await
}
async fn list_all_logs(
state: axum::extract::State<ObserverState>,
query: axum::extract::Query<super::ListObserverLogsQuery>,
) -> impl axum::response::IntoResponse {
list_observer_logs(state, axum::extract::Path(None), query).await
}
async fn list_single_logs(
state: axum::extract::State<ObserverState>,
path: axum::extract::Path<uuid::Uuid>,
query: axum::extract::Query<super::ListObserverLogsQuery>,
) -> impl axum::response::IntoResponse {
list_observer_logs(state, axum::extract::Path(Some(path.0)), query).await
}
pub fn observer_runtime_routes(state: RuntimeHealthState) -> Router {
Router::new()
.route("/runtime/health", get(get_runtime_health))
.route("/runtime/reload", post(reload_observers))
.with_state(state)
}
#[cfg(test)]
mod tests {
#[test]
fn test_routes_compile() {
}
}