ddstats/src/api/maps.rs

38 lines
1.0 KiB
Rust

use rocket::{serde::json::Json, Route, State};
use crate::database::{models::map::Map, DatabaseHandler};
#[get("/")]
async fn get_all_maps(db: &State<DatabaseHandler>) -> Result<Json<Vec<Map>>, String> {
match Map::get_all_maps(db).await {
Ok(maps) => Ok(Json(maps)),
Err(err) => Err(format!("Error: {}", err)),
}
}
#[get("/category/<category>")]
async fn get_maps_by_category(
db: &State<DatabaseHandler>,
category: &str,
) -> Result<Json<Vec<Map>>, String> {
match Map::get_maps_by_category(db, category).await {
Ok(maps) => Ok(Json(maps)),
Err(err) => Err(format!("Error: {}", err)),
}
}
#[get("/mapper/<mapper>")]
async fn get_maps_by_mapper(
db: &State<DatabaseHandler>,
mapper: &str,
) -> Result<Json<Vec<Map>>, String> {
match Map::get_maps_by_mapper(db, mapper).await {
Ok(maps) => Ok(Json(maps)),
Err(err) => Err(format!("Error: {}", err)),
}
}
pub fn get_all_routes() -> Vec<Route> {
routes![get_all_maps, get_maps_by_category, get_maps_by_mapper]
}