'use client'; import type { DriversLeaderboardDTO } from '@/lib/types/generated/DriversLeaderboardDTO'; import type { DriversViewData } from '@/lib/view-data/DriversViewData'; import { RatingDisplay } from '@/lib/display-objects/RatingDisplay'; import { NumberDisplay } from '@/lib/display-objects/NumberDisplay'; import type { ViewDataBuilder } from '@/lib/contracts/builders/ViewDataBuilder'; export class DriversViewDataBuilder { public static build(apiDto: DriversLeaderboardDTO): DriversViewData { return { drivers: apiDto.drivers.map(driver => ({ id: driver.id, name: driver.name, rating: driver.rating, ratingLabel: RatingDisplay.format(driver.rating), skillLevel: driver.skillLevel, category: driver.category ?? undefined, nationality: driver.nationality, racesCompleted: driver.racesCompleted, wins: driver.wins, podiums: driver.podiums, isActive: driver.isActive, rank: driver.rank, avatarUrl: driver.avatarUrl ?? undefined, })), totalRaces: apiDto.totalRaces, totalRacesLabel: NumberDisplay.format(apiDto.totalRaces), totalWins: apiDto.totalWins, totalWinsLabel: NumberDisplay.format(apiDto.totalWins), activeCount: apiDto.activeCount, activeCountLabel: NumberDisplay.format(apiDto.activeCount), totalDriversLabel: NumberDisplay.format(apiDto.drivers.length), }; } } DriversViewDataBuilder satisfies ViewDataBuilder;