Skip to main content

oxinbox_backend/routes/
mod.rs

1pub mod ai;
2pub mod auth;
3pub mod geo;
4pub mod push_routes;
5pub mod query;
6pub mod tasks;
7pub mod voice;
8
9use axum::Json;
10use serde::Serialize;
11
12#[derive(Serialize)]
13pub struct HealthResponse {
14    pub status: &'static str,
15}
16
17pub async fn health() -> Json<HealthResponse> {
18    Json(HealthResponse { status: "ok" })
19}
20
21pub fn api_routes(state: &crate::auth::AuthState) -> axum::Router<crate::auth::AuthState> {
22    axum::Router::new()
23        .route("/health", axum::routing::get(health))
24        .merge(tasks::task_routes(state.clone()))
25        .merge(ai::ai_routes(state.clone()))
26        .merge(query::query_routes(state.clone()))
27        .merge(voice::voice_routes())
28        .route(
29            "/api/push/subscribe",
30            axum::routing::post(push_routes::subscribe_push),
31        )
32        .route(
33            "/api/push/unsubscribe",
34            axum::routing::post(push_routes::unsubscribe_push),
35        )
36        .merge(geo::geo_routes())
37        .route(
38            "/auth/register/start",
39            axum::routing::post(auth::start_registration),
40        )
41        .route(
42            "/auth/register/finish",
43            axum::routing::post(auth::finish_registration),
44        )
45        .route("/auth/login/start", axum::routing::post(auth::start_login))
46        .route(
47            "/auth/login/finish",
48            axum::routing::post(auth::finish_login),
49        )
50}