Files
gridpilot.gg/packages/racing/domain/repositories/IRaceRegistrationRepository.ts
2025-12-04 11:54:42 +01:00

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>;
}