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 { constructor(private readonly raceRepository: IRaceRepository) {} async execute(params: GetTotalRacesUseCaseParams, presenter: IGetTotalRacesPresenter): Promise { const races = await this.raceRepository.findAll(); const dto: GetTotalRacesResultDTO = { totalRaces: races.length }; presenter.reset(); presenter.present(dto); } }