20 lines
907 B
TypeScript
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);
|
|
}
|
|
} |