Files
gridpilot.gg/packages/racing/domain/repositories/ITrackRepository.ts
2025-12-08 23:52:36 +01:00

60 lines
1.1 KiB
TypeScript

/**
* Application Port: ITrackRepository
*
* Repository interface for Track entity CRUD operations.
* Defines async methods using domain entities as types.
*/
import type { Track, TrackCategory } from '../entities/Track';
export interface ITrackRepository {
/**
* Find a track by ID
*/
findById(id: string): Promise<Track | null>;
/**
* Find all tracks
*/
findAll(): Promise<Track[]>;
/**
* Find tracks by game ID
*/
findByGameId(gameId: string): Promise<Track[]>;
/**
* Find tracks by category
*/
findByCategory(category: TrackCategory): Promise<Track[]>;
/**
* Find tracks by country
*/
findByCountry(country: string): Promise<Track[]>;
/**
* Search tracks by name
*/
searchByName(query: string): Promise<Track[]>;
/**
* Create a new track
*/
create(track: Track): Promise<Track>;
/**
* Update an existing track
*/
update(track: Track): Promise<Track>;
/**
* Delete a track by ID
*/
delete(id: string): Promise<void>;
/**
* Check if a track exists by ID
*/
exists(id: string): Promise<boolean>;
}