Files
gridpilot.gg/apps/website/lib/builders/view-data/LeaderboardsViewDataBuilder.ts
2026-01-14 02:02:24 +01:00

34 lines
1.2 KiB
TypeScript

import type { DriverLeaderboardItemDTO } from '@/lib/types/generated/DriverLeaderboardItemDTO';
import type { TeamListItemDTO } from '@/lib/types/generated/TeamListItemDTO';
import type { LeaderboardsViewData } from '@/lib/view-data/LeaderboardsViewData';
export class LeaderboardsViewDataBuilder {
static build(
driversDto: { drivers: DriverLeaderboardItemDTO[] } | null,
teamsDto: { teams: TeamListItemDTO[] } | null
): LeaderboardsViewData {
return {
drivers: driversDto?.drivers.slice(0, 5).map((driver, index) => ({
id: driver.id,
name: driver.name,
rating: driver.rating,
skillLevel: driver.skillLevel,
nationality: driver.nationality,
wins: driver.wins,
rank: driver.rank,
avatarUrl: driver.avatarUrl || '',
position: index + 1,
})) || [],
teams: teamsDto?.teams.slice(0, 5).map((team, index) => ({
id: team.id,
name: team.name,
tag: team.tag,
memberCount: team.memberCount,
category: team.category,
totalWins: team.totalWins || 0,
logoUrl: team.logoUrl || '',
position: index + 1,
})) || [],
};
}
}