use std::sync::Arc; use axum::http::StatusCode; use axum::response::Json; use serde::Serialize; use crate::state::AppState; #[derive(Serialize)] pub struct TravelModeInfo { mode: String, destinations: usize, } #[derive(Serialize)] pub struct TravelModesResponse { modes: Vec, } pub async fn get_travel_modes( state: Arc, ) -> Result, (StatusCode, String)> { let store = &state.travel_time_store; let modes = store .available_modes .iter() .map(|mode| TravelModeInfo { mode: mode.clone(), destinations: store .destinations .get(mode) .map(|slugs| slugs.len()) .unwrap_or(0), }) .collect(); Ok(Json(TravelModesResponse { modes })) }