Add player profiles with lifetime stats and map records

This commit is contained in:
2026-09-19 22:24:35 -04:00
parent ce0321a6e9
commit 33f2f123c5
7 changed files with 268 additions and 2 deletions
+39
View File
@@ -13,6 +13,45 @@ export const leaderboardMetrics = [
export type LeaderboardMetric = typeof leaderboardMetrics[number]['key'];
export type PlayerStats = Record<LeaderboardMetric, number>;
export interface PlayerMapRecord extends PlayerStats {
key: string;
name: string;
lastSeen: string;
}
export interface PlayerMatch {
id: number;
server: string;
mapName: string;
startedAt: string;
lastSeen: string;
status: 'active' | 'completed' | 'interrupted';
completed: number;
highestRound: number;
roundsSurvived: number;
kills: number;
headshots: number;
revives: number;
downs: number;
bestScore: number;
}
export interface PlayerProfile {
game: string;
guid: string;
name: string;
firstSeen: string;
lastSeen: string;
stats: PlayerStats;
maps: PlayerMapRecord[];
matches: PlayerMatch[];
offset: number;
limit: number;
}
export function playerProfileHref(game: string, guid: string): string {
return `/leaderboard/players/${encodeURIComponent(game)}/${encodeURIComponent(guid)}`;
}
export interface LeaderboardEntry {
rank: number;
game: string;