resolve manual DTOs

This commit is contained in:
2025-12-18 22:19:40 +01:00
parent 4a3087ae35
commit d617654928
179 changed files with 3716 additions and 1257 deletions

View File

@@ -1,15 +1,34 @@
import { BaseApiClient } from '../base/BaseApiClient';
import type {
RaceStatsDto,
RacesPageDataDto,
RaceDetailDto,
RaceResultsDetailDto,
RaceWithSOFDto,
RegisterForRaceInputDto,
ImportRaceResultsInputDto,
ImportRaceResultsSummaryDto,
WithdrawFromRaceInputDto,
} from '../../dtos';
import type { RaceStatsDTO } from '../../types/generated/RaceStatsDTO';
import type { RacesPageDataRaceDTO } from '../../types/generated/RacesPageDataRaceDTO';
import type { RaceResultsDetailDTO } from '../../types/generated/RaceResultsDetailDTO';
import type { RaceWithSOFDTO } from '../../types/generated/RaceWithSOFDTO';
import type { RegisterForRaceParamsDTO } from '../../types/generated/RegisterForRaceParamsDTO';
import type { ImportRaceResultsDTO } from '../../types/generated/ImportRaceResultsDTO';
import type { WithdrawFromRaceParamsDTO } from '../../types/generated/WithdrawFromRaceParamsDTO';
import type { RaceDetailRaceDTO } from '../../types/generated/RaceDetailRaceDTO';
import type { RaceDetailLeagueDTO } from '../../types/generated/RaceDetailLeagueDTO';
import type { RaceDetailEntryDTO } from '../../types/generated/RaceDetailEntryDTO';
import type { RaceDetailRegistrationDTO } from '../../types/generated/RaceDetailRegistrationDTO';
import type { RaceDetailUserResultDTO } from '../../types/generated/RaceDetailUserResultDTO';
// Define missing types
type RacesPageDataDTO = { races: RacesPageDataRaceDTO[] };
type RaceDetailDTO = {
race: RaceDetailRaceDTO | null;
league: RaceDetailLeagueDTO | null;
entryList: RaceDetailEntryDTO[];
registration: RaceDetailRegistrationDTO;
userResult: RaceDetailUserResultDTO | null;
error?: string;
};
type ImportRaceResultsSummaryDTO = {
success: boolean;
raceId: string;
driversProcessed: number;
resultsRecorded: number;
errors?: string[];
};
/**
* Races API Client
@@ -18,42 +37,42 @@ import type {
*/
export class RacesApiClient extends BaseApiClient {
/** Get total number of races */
getTotal(): Promise<RaceStatsDto> {
return this.get<RaceStatsDto>('/races/total-races');
getTotal(): Promise<RaceStatsDTO> {
return this.get<RaceStatsDTO>('/races/total-races');
}
/** Get races page data */
getPageData(): Promise<RacesPageDataDto> {
return this.get<RacesPageDataDto>('/races/page-data');
getPageData(): Promise<RacesPageDataDTO> {
return this.get<RacesPageDataDTO>('/races/page-data');
}
/** Get race detail */
getDetail(raceId: string, driverId: string): Promise<RaceDetailDto> {
return this.get<RaceDetailDto>(`/races/${raceId}?driverId=${driverId}`);
getDetail(raceId: string, driverId: string): Promise<RaceDetailDTO> {
return this.get<RaceDetailDTO>(`/races/${raceId}?driverId=${driverId}`);
}
/** Get race results detail */
getResultsDetail(raceId: string): Promise<RaceResultsDetailDto> {
return this.get<RaceResultsDetailDto>(`/races/${raceId}/results`);
getResultsDetail(raceId: string): Promise<RaceResultsDetailDTO> {
return this.get<RaceResultsDetailDTO>(`/races/${raceId}/results`);
}
/** Get race with strength of field */
getWithSOF(raceId: string): Promise<RaceWithSOFDto> {
return this.get<RaceWithSOFDto>(`/races/${raceId}/sof`);
getWithSOF(raceId: string): Promise<RaceWithSOFDTO> {
return this.get<RaceWithSOFDTO>(`/races/${raceId}/sof`);
}
/** Register for race */
register(raceId: string, input: RegisterForRaceInputDto): Promise<void> {
register(raceId: string, input: RegisterForRaceParamsDTO): Promise<void> {
return this.post<void>(`/races/${raceId}/register`, input);
}
/** Import race results */
importResults(raceId: string, input: ImportRaceResultsInputDto): Promise<ImportRaceResultsSummaryDto> {
return this.post<ImportRaceResultsSummaryDto>(`/races/${raceId}/import-results`, input);
importResults(raceId: string, input: ImportRaceResultsDTO): Promise<ImportRaceResultsSummaryDTO> {
return this.post<ImportRaceResultsSummaryDTO>(`/races/${raceId}/import-results`, input);
}
/** Withdraw from race */
withdraw(raceId: string, input: WithdrawFromRaceInputDto): Promise<void> {
withdraw(raceId: string, input: WithdrawFromRaceParamsDTO): Promise<void> {
return this.post<void>(`/races/${raceId}/withdraw`, input);
}