ai generated solutions to our ai generated problems

This commit is contained in:
2026-06-15 08:45:24 +01:00
parent c94a09f46c
commit efe233667f
5 changed files with 100 additions and 74 deletions
+30 -5
View File
@@ -386,14 +386,12 @@ async fn leaderboard(
return Ok(Json(LeaderboardResponse { teams }));
}
let rows = leaderboard_rows(&state, limit)?;
cache_leaderboard(&state, &rows)?;
Ok(Json(LeaderboardResponse { teams: rows }))
let teams = leaderboard_roster_rows(&state, limit)?;
Ok(Json(LeaderboardResponse { teams }))
}
fn leaderboard_rows(state: &AppState, limit: usize) -> Result<Vec<TeamLeaderboardRow>, ApiError> {
fn leaderboard_teams(state: &AppState, limit: usize) -> Result<Vec<TeamRecord>, ApiError> {
let teams_conn = open_db(&state.teams_db)?;
let battles_conn = open_db(&state.battles_db)?;
// Deduplicate teams by name across tournaments — pick the highest team_id
// (most recent) per name for the roster count, but stats come from team_name.
let mut stmt = teams_conn
@@ -411,6 +409,33 @@ fn leaderboard_rows(state: &AppState, limit: usize) -> Result<Vec<TeamLeaderboar
.map_err(db_error)?
.collect::<Result<Vec<_>, _>>()
.map_err(db_error)?;
Ok(teams)
}
fn leaderboard_roster_rows(
state: &AppState,
limit: usize,
) -> Result<Vec<TeamLeaderboardRow>, ApiError> {
leaderboard_teams(state, limit).map(|teams| {
teams
.into_iter()
.map(|team| TeamLeaderboardRow {
team_id: team.team_id,
name: team.name,
player_count: team.members,
total_battles: 0,
wins: 0,
losses: 0,
win_rate: 0.0,
total_kills: 0,
})
.collect()
})
}
fn leaderboard_rows(state: &AppState, limit: usize) -> Result<Vec<TeamLeaderboardRow>, ApiError> {
let battles_conn = open_db(&state.battles_db)?;
let teams = leaderboard_teams(state, limit)?;
let team_names = teams
.iter()
.map(|team| team.name.as_str())