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