Files
gridpilot.gg/packages/racing/domain/repositories/ILiveryRepository.ts
2025-12-10 12:38:55 +01:00

28 lines
1.3 KiB
TypeScript

/**
* Repository Interface: ILiveryRepository
*
* Defines operations for livery-related entities
*/
import type { DriverLivery } from '../entities/DriverLivery';
import type { LiveryTemplate } from '../entities/LiveryTemplate';
export interface ILiveryRepository {
// DriverLivery operations
findDriverLiveryById(id: string): Promise<DriverLivery | null>;
findDriverLiveriesByDriverId(driverId: string): Promise<DriverLivery[]>;
findDriverLiveryByDriverAndCar(driverId: string, carId: string): Promise<DriverLivery | null>;
findDriverLiveriesByGameId(gameId: string): Promise<DriverLivery[]>;
findDriverLiveryByDriverAndGame(driverId: string, gameId: string): Promise<DriverLivery[]>;
createDriverLivery(livery: DriverLivery): Promise<DriverLivery>;
updateDriverLivery(livery: DriverLivery): Promise<DriverLivery>;
deleteDriverLivery(id: string): Promise<void>;
// LiveryTemplate operations
findTemplateById(id: string): Promise<LiveryTemplate | null>;
findTemplatesBySeasonId(seasonId: string): Promise<LiveryTemplate[]>;
findTemplateBySeasonAndCar(seasonId: string, carId: string): Promise<LiveryTemplate | null>;
createTemplate(template: LiveryTemplate): Promise<LiveryTemplate>;
updateTemplate(template: LiveryTemplate): Promise<LiveryTemplate>;
deleteTemplate(id: string): Promise<void>;
}