import type { IRaceRepository } from '../../domain/repositories/IRaceRepository'; import type { AsyncUseCase } from '@core/shared/application'; import { Result } from '@core/shared/application/Result'; import type { ApplicationErrorCode } from '@core/shared/errors/ApplicationErrorCode'; import type { GetLeagueScheduleOutputPort } from '../ports/output/GetLeagueScheduleOutputPort'; export interface GetLeagueScheduleUseCaseParams { leagueId: string; } export class GetLeagueScheduleUseCase implements AsyncUseCase { constructor(private readonly raceRepository: IRaceRepository) {} async execute(params: GetLeagueScheduleUseCaseParams): Promise>> { const races = await this.raceRepository.findByLeagueId(params.leagueId); return Result.ok({ races: races.map(race => ({ id: race.id, name: `${race.track} - ${race.car}`, scheduledAt: race.scheduledAt, })), }); } }