import { api as api } from '../../api'; import { RaceResultsDetailPresenter, RaceWithSOFPresenter, ImportRaceResultsPresenter } from '../../presenters'; import { RaceResultsDetailViewModel } from '../../view-models'; export class RaceResultsService { constructor( private readonly apiClient = api.races, private readonly resultsDetailPresenter = new RaceResultsDetailPresenter(), private readonly sofPresenter = new RaceWithSOFPresenter(), private readonly importPresenter = new ImportRaceResultsPresenter() ) {} async importRaceResults(raceId: string, input: any): Promise { const dto = await this.apiClient.importResults(raceId, input); return this.importPresenter.present(dto); } async getResultsDetail(raceId: string, currentUserId?: string): Promise { const dto = await this.apiClient.getResultsDetail(raceId); return this.resultsDetailPresenter.present(dto, currentUserId); } async getWithSOF(raceId: string): Promise { const dto = await this.apiClient.getWithSOF(raceId); return this.sofPresenter.present(dto); } } // Singleton instance export const raceResultsService = new RaceResultsService(); // Backward compatibility functions export async function getRaceResults( raceId: string, currentUserId?: string ): Promise { return raceResultsService.getResultsDetail(raceId, currentUserId); } export async function getRaceSOF(raceId: string): Promise { return raceResultsService.getWithSOF(raceId); } export async function importRaceResults(raceId: string, input: any): Promise { return raceResultsService.importRaceResults(raceId, input); }