import type { IRaceRegistrationRepository } from '@gridpilot/racing/domain/repositories/IRaceRegistrationRepository'; import type { WithdrawFromRaceCommandDTO } from '../dto/WithdrawFromRaceCommandDTO'; /** * Mirrors legacy withdrawFromRace behavior: * - throws when driver is not registered * - removes registration and cleans up empty race sets * * The repository encapsulates the in-memory or persistent details. */ export class WithdrawFromRaceUseCase { constructor( private readonly registrationRepository: IRaceRegistrationRepository, ) {} async execute(command: WithdrawFromRaceCommandDTO): Promise { const { raceId, driverId } = command; // Let repository enforce "not registered" error behavior to match legacy logic. await this.registrationRepository.withdraw(raceId, driverId); } }