Files
gridpilot.gg/core/racing/application/use-cases/GetTotalRacesUseCase.ts
2025-12-16 11:52:26 +01:00

20 lines
907 B
TypeScript

import type { IRaceRepository } from '../../domain/repositories/IRaceRepository';
import type { IGetTotalRacesPresenter, GetTotalRacesResultDTO, GetTotalRacesViewModel } from '../presenters/IGetTotalRacesPresenter';
import type { UseCase } from '@core/shared/application/UseCase';
export interface GetTotalRacesUseCaseParams {}
export interface GetTotalRacesResultDTO {
totalRaces: number;
}
export class GetTotalRacesUseCase implements UseCase<GetTotalRacesUseCaseParams, GetTotalRacesResultDTO, GetTotalRacesViewModel, IGetTotalRacesPresenter> {
constructor(private readonly raceRepository: IRaceRepository) {}
async execute(params: GetTotalRacesUseCaseParams, presenter: IGetTotalRacesPresenter): Promise<void> {
const races = await this.raceRepository.findAll();
const dto: GetTotalRacesResultDTO = { totalRaces: races.length };
presenter.reset();
presenter.present(dto);
}
}