import type { ILeagueRepository } from '../../domain/repositories/ILeagueRepository'; import type { IGetTotalLeaguesPresenter, GetTotalLeaguesResultDTO, GetTotalLeaguesViewModel } from '../presenters/IGetTotalLeaguesPresenter'; import type { UseCase } from '@core/shared/application/UseCase'; export interface GetTotalLeaguesUseCaseParams {} export interface GetTotalLeaguesResultDTO { totalLeagues: number; } export class GetTotalLeaguesUseCase implements UseCase { constructor(private readonly leagueRepository: ILeagueRepository) {} async execute(params: GetTotalLeaguesUseCaseParams, presenter: IGetTotalLeaguesPresenter): Promise { const leagues = await this.leagueRepository.findAll(); const dto: GetTotalLeaguesResultDTO = { totalLeagues: leagues.length }; presenter.reset(); presenter.present(dto); } }