api client refactor

This commit is contained in:
2025-12-17 18:01:47 +01:00
parent bab55955e1
commit 4177644b18
190 changed files with 6403 additions and 1624 deletions

View File

@@ -0,0 +1,28 @@
import { DriversLeaderboardDto, DriverLeaderboardItemDto } from '../dtos';
import { DriverLeaderboardItemViewModel } from './DriverLeaderboardItemViewModel';
export class DriverLeaderboardViewModel implements DriversLeaderboardDto {
drivers: DriverLeaderboardItemViewModel[];
constructor(dto: DriversLeaderboardDto & { drivers: DriverLeaderboardItemDto[] }, previousDrivers?: DriverLeaderboardItemDto[]) {
this.drivers = dto.drivers.map((driver, index) => {
const previous = previousDrivers?.find(p => p.id === driver.id);
return new DriverLeaderboardItemViewModel(driver, index + 1, previous?.rating);
});
}
/** UI-specific: Total races across all drivers */
get totalRaces(): number {
return this.drivers.reduce((sum, driver) => sum + driver.races, 0);
}
/** UI-specific: Total wins across all drivers */
get totalWins(): number {
return this.drivers.reduce((sum, driver) => sum + driver.wins, 0);
}
/** UI-specific: Active drivers count */
get activeCount(): number {
return this.drivers.filter(driver => driver.isActive).length;
}
}