import type { IRaceRegistrationRepository } from '@gridpilot/racing/domain/repositories/IRaceRegistrationRepository'; import type { GetRaceRegistrationsQueryParamsDTO } from '../dto/RaceRegistrationQueryDTO'; import type { IRaceRegistrationsPresenter, RaceRegistrationsResultDTO, RaceRegistrationsViewModel, } from '../presenters/IRaceRegistrationsPresenter'; import type { UseCase } from '@gridpilot/shared/application/UseCase'; /** * Use Case: GetRaceRegistrationsUseCase * * Returns registered driver IDs for a race. * Orchestrates domain logic and delegates presentation to the presenter. */ export class GetRaceRegistrationsUseCase implements UseCase { constructor( private readonly registrationRepository: IRaceRegistrationRepository, ) {} async execute( params: GetRaceRegistrationsQueryParamsDTO, presenter: IRaceRegistrationsPresenter, ): Promise { presenter.reset(); const { raceId } = params; const registeredDriverIds = await this.registrationRepository.getRegisteredDrivers(raceId); const dto: RaceRegistrationsResultDTO = { registeredDriverIds, }; presenter.present(dto); } }