league service

This commit is contained in:
2025-12-16 00:57:31 +01:00
parent 3b566c973d
commit 775d41e055
130 changed files with 4077 additions and 1036 deletions

View File

@@ -1,4 +1,5 @@
import type { IStandingRepository } from '../../domain/repositories/IStandingRepository';
import type { IDriverRepository } from '../../domain/repositories/IDriverRepository';
import type {
ILeagueStandingsPresenter,
LeagueStandingsResultDTO,
@@ -18,15 +19,22 @@ export class GetLeagueStandingsUseCase
implements
UseCase<GetLeagueStandingsUseCaseParams, LeagueStandingsResultDTO, LeagueStandingsViewModel, ILeagueStandingsPresenter>
{
constructor(private readonly standingRepository: IStandingRepository) {}
constructor(
private readonly standingRepository: IStandingRepository,
private readonly driverRepository: IDriverRepository,
) {}
async execute(
params: GetLeagueStandingsUseCaseParams,
presenter: ILeagueStandingsPresenter,
): Promise<void> {
const standings = await this.standingRepository.findByLeagueId(params.leagueId);
const driverIds = [...new Set(standings.map(s => s.driverId))];
const drivers = await this.driverRepository.findByIds(driverIds);
const driverMap = new Map(drivers.map(d => [d.id, { id: d.id, name: d.name }]));
const dto: LeagueStandingsResultDTO = {
standings,
drivers: Array.from(driverMap.values()),
};
presenter.reset();
presenter.present(dto);