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

20 lines
953 B
TypeScript

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<GetTotalLeaguesUseCaseParams, GetTotalLeaguesResultDTO, GetTotalLeaguesViewModel, IGetTotalLeaguesPresenter> {
constructor(private readonly leagueRepository: ILeagueRepository) {}
async execute(params: GetTotalLeaguesUseCaseParams, presenter: IGetTotalLeaguesPresenter): Promise<void> {
const leagues = await this.leagueRepository.findAll();
const dto: GetTotalLeaguesResultDTO = { totalLeagues: leagues.length };
presenter.reset();
presenter.present(dto);
}
}