45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
/**
|
|
* Application Port: IRaceRegistrationRepository
|
|
*
|
|
* Repository interface for race registration operations.
|
|
* This defines the persistence boundary for RaceRegistration entities.
|
|
*/
|
|
|
|
import type { RaceRegistration } from '../entities/RaceRegistration';
|
|
|
|
export interface IRaceRegistrationRepository {
|
|
/**
|
|
* Check if a driver is registered for a race.
|
|
*/
|
|
isRegistered(raceId: string, driverId: string): Promise<boolean>;
|
|
|
|
/**
|
|
* Get all registered driver IDs for a race.
|
|
*/
|
|
getRegisteredDrivers(raceId: string): Promise<string[]>;
|
|
|
|
/**
|
|
* Get the number of registrations for a race.
|
|
*/
|
|
getRegistrationCount(raceId: string): Promise<number>;
|
|
|
|
/**
|
|
* Register a driver for a race.
|
|
*/
|
|
register(registration: RaceRegistration): Promise<void>;
|
|
|
|
/**
|
|
* Withdraw a driver from a race.
|
|
*/
|
|
withdraw(raceId: string, driverId: string): Promise<void>;
|
|
|
|
/**
|
|
* Get all race IDs a driver is registered for.
|
|
*/
|
|
getDriverRegistrations(driverId: string): Promise<string[]>;
|
|
|
|
/**
|
|
* Clear all registrations for a race (e.g., when race is cancelled).
|
|
*/
|
|
clearRaceRegistrations(raceId: string): Promise<void>;
|
|
} |