From 3113f762d83fab020e63d008d1a6cbd15b441362 Mon Sep 17 00:00:00 2001 From: Ilion Beyst Date: Thu, 4 Aug 2022 21:48:25 +0200 Subject: list matches for a specific bot --- planetwars-server/src/routes/matches.rs | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'planetwars-server/src/routes') diff --git a/planetwars-server/src/routes/matches.rs b/planetwars-server/src/routes/matches.rs index fde8471..c1957d4 100644 --- a/planetwars-server/src/routes/matches.rs +++ b/planetwars-server/src/routes/matches.rs @@ -8,7 +8,10 @@ use serde::{Deserialize, Serialize}; use std::{path::PathBuf, sync::Arc}; use crate::{ - db::matches::{self, MatchState}, + db::{ + self, + matches::{self, MatchState}, + }, DatabaseConnection, GlobalConfig, }; @@ -35,6 +38,8 @@ pub struct ListRecentMatchesParams { // TODO: implement these before: Option, after: Option, + + bot: Option, } const MAX_NUM_RETURNED_MATCHES: usize = 100; @@ -47,9 +52,18 @@ pub async fn list_recent_matches( let count = std::cmp::min( params.count.unwrap_or(DEFAULT_NUM_RETURNED_MATCHES), MAX_NUM_RETURNED_MATCHES, - ); + ) as i64; + + let matches = match params.bot { + Some(bot_name) => { + let bot = db::bots::find_bot_by_name(&bot_name, &conn) + .map_err(|_| StatusCode::BAD_REQUEST)?; + matches::list_bot_matches(bot.id, count, &conn) + } + None => matches::list_public_matches(count, &conn), + }; - matches::list_public_matches(count as i64, &conn) + matches .map_err(|_| StatusCode::BAD_REQUEST) .map(|matches| Json(matches.into_iter().map(match_data_to_api).collect())) } -- cgit v1.2.3