40 lines
1.1 KiB
Rust
40 lines
1.1 KiB
Rust
use rocket::{serde::json::Json, Route, State};
|
|
|
|
use crate::database::{
|
|
models::{
|
|
race::Race,
|
|
search_result::{get_page_number_as_i32_from_str, SearchResult},
|
|
},
|
|
DatabaseHandler,
|
|
};
|
|
|
|
#[get("/player/<player>?<page>")]
|
|
async fn get_races_by_player(
|
|
db: &State<DatabaseHandler>,
|
|
player: &str,
|
|
page: Option<&str>,
|
|
) -> Result<Json<SearchResult<Race>>, String> {
|
|
let page_num = get_page_number_as_i32_from_str(page);
|
|
match Race::get_races_by_player(db, player, page_num).await {
|
|
Ok(maps) => Ok(Json(maps)),
|
|
Err(err) => Err(format!("Error: {}", err)),
|
|
}
|
|
}
|
|
|
|
#[get("/map/<map>?<page>")]
|
|
async fn get_races_by_map(
|
|
db: &State<DatabaseHandler>,
|
|
map: &str,
|
|
page: Option<&str>,
|
|
) -> Result<Json<SearchResult<Race>>, String> {
|
|
let page_num = get_page_number_as_i32_from_str(page);
|
|
match Race::get_races_by_map(db, map, page_num).await {
|
|
Ok(maps) => Ok(Json(maps)),
|
|
Err(err) => Err(format!("Error: {}", err)),
|
|
}
|
|
}
|
|
|
|
pub fn get_all_routes() -> Vec<Route> {
|
|
routes![get_races_by_player, get_races_by_map]
|
|
}
|