ddstats/src/api/teamraces.rs

40 lines
1.1 KiB
Rust

use rocket::{serde::json::Json, Route, State};
use crate::database::{
models::{
search_result::{get_page_number_as_i32_from_str, SearchResult},
teamrace::Teamrace,
},
DatabaseHandler,
};
#[get("/player/<player>?<page>")]
async fn get_teamrace_by_player(
db: &State<DatabaseHandler>,
player: &str,
page: Option<&str>,
) -> Result<Json<SearchResult<Teamrace>>, String> {
let page_num = get_page_number_as_i32_from_str(page);
match Teamrace::get_teamrace_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_teamrace_by_map(
db: &State<DatabaseHandler>,
map: &str,
page: Option<&str>,
) -> Result<Json<SearchResult<Teamrace>>, String> {
let page_num = get_page_number_as_i32_from_str(page);
match Teamrace::get_teamrace_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_teamrace_by_player, get_teamrace_by_map]
}