view data fixes

This commit is contained in:
2026-01-24 00:52:27 +01:00
parent 62e8b768ce
commit ae59df61eb
321 changed files with 1157 additions and 2234 deletions

View File

@@ -1,11 +1,6 @@
import { RaceDetailEntry, RaceDetailLeague, RaceDetailRace, RaceDetailRegistration, RaceDetailUserResult, RaceDetailViewData } from '@/lib/view-data/RaceDetailViewData';
import type { RaceDetailDTO } from '@/lib/types/generated/RaceDetailDTO';
import type { RaceDetailEntry, RaceDetailLeague, RaceDetailRace, RaceDetailRegistration, RaceDetailUserResult, RaceDetailViewData } from '@/lib/view-data/RaceDetailViewData';
/**
* Race Detail View Data Builder
*
* Transforms API DTO into ViewData for the race detail template.
* Deterministic, side-effect free.
*/
import { ViewDataBuilder } from "../../contracts/builders/ViewDataBuilder";
export class RaceDetailViewDataBuilder implements ViewDataBuilder<any, any> {
@@ -13,8 +8,7 @@ export class RaceDetailViewDataBuilder implements ViewDataBuilder<any, any> {
return RaceDetailViewDataBuilder.build(input);
}
static build(
static build(apiDto: any): RaceDetailViewData {
static build(apiDto: RaceDetailDTO): RaceDetailViewData {
if (!apiDto || !apiDto.race) {
return {
race: {
@@ -36,11 +30,11 @@ export class RaceDetailViewDataBuilder implements ViewDataBuilder<any, any> {
const race: RaceDetailRace = {
id: apiDto.race.id,
track: apiDto.race.track,
car: apiDto.race.car,
track: apiDto.race.track || '',
car: apiDto.race.car || '',
scheduledAt: apiDto.race.scheduledAt,
status: apiDto.race.status as 'scheduled' | 'running' | 'completed' | 'cancelled',
sessionType: apiDto.race.sessionType,
status: apiDto.race.status as any,
sessionType: apiDto.race.sessionType || 'race',
};
const league: RaceDetailLeague | undefined = apiDto.league ? {
@@ -48,8 +42,8 @@ export class RaceDetailViewDataBuilder implements ViewDataBuilder<any, any> {
name: apiDto.league.name,
description: apiDto.league.description || undefined,
settings: {
maxDrivers: apiDto.league.settings?.maxDrivers || 32,
qualifyingFormat: apiDto.league.settings?.qualifyingFormat || 'Open',
maxDrivers: (apiDto.league.settings as any)?.maxDrivers || 32,
qualifyingFormat: (apiDto.league.settings as any)?.qualifyingFormat || 'Open',
},
} : undefined;
@@ -83,7 +77,7 @@ export class RaceDetailViewDataBuilder implements ViewDataBuilder<any, any> {
entryList,
registration,
userResult,
canReopenRace: apiDto.canReopenRace || false,
canReopenRace: (apiDto as any).canReopenRace || false,
};
}
}