48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
import { api as api } from '../../api';
|
|
import { RaceDetailPresenter } from '../../presenters';
|
|
import { RaceDetailViewModel } from '../../view-models';
|
|
|
|
export class RaceService {
|
|
constructor(
|
|
private readonly apiClient = api.races,
|
|
private readonly presenter = new RaceDetailPresenter()
|
|
) {}
|
|
|
|
async getRaceDetail(
|
|
raceId: string,
|
|
driverId: string
|
|
): Promise<RaceDetailViewModel> {
|
|
const dto = await this.apiClient.getDetail(raceId, driverId);
|
|
return this.presenter.present(dto);
|
|
}
|
|
|
|
async getRacesPageData(): Promise<any> {
|
|
const dto = await this.apiClient.getPageData();
|
|
// TODO: use presenter
|
|
return dto;
|
|
}
|
|
|
|
async getRacesTotal(): Promise<any> {
|
|
const dto = await this.apiClient.getTotal();
|
|
return dto;
|
|
}
|
|
}
|
|
|
|
// Singleton instance
|
|
export const raceService = new RaceService();
|
|
|
|
// Backward compatibility functions
|
|
export async function getRaceDetail(
|
|
raceId: string,
|
|
driverId: string
|
|
): Promise<RaceDetailViewModel> {
|
|
return raceService.getRaceDetail(raceId, driverId);
|
|
}
|
|
|
|
export async function getRacesPageData(): Promise<any> {
|
|
return raceService.getRacesPageData();
|
|
}
|
|
|
|
export async function getRacesTotal(): Promise<any> {
|
|
return raceService.getRacesTotal();
|
|
} |