Files
gridpilot.gg/packages/racing/application/use-cases/WithdrawFromRaceUseCase.ts
2025-12-04 15:15:24 +01:00

22 lines
831 B
TypeScript

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<void> {
const { raceId, driverId } = command;
// Let repository enforce "not registered" error behavior to match legacy logic.
await this.registrationRepository.withdraw(raceId, driverId);
}
}