lmao
This commit is contained in:
parent
03445188ea
commit
524580eb25
102 changed files with 36625 additions and 1295 deletions
38
server-rs/src/routes/travel_modes.rs
Normal file
38
server-rs/src/routes/travel_modes.rs
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
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<TravelModeInfo>,
|
||||
}
|
||||
|
||||
pub async fn get_travel_modes(
|
||||
state: Arc<AppState>,
|
||||
) -> Result<Json<TravelModesResponse>, (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 }))
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue