/** * 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; /** * Find all tracks */ findAll(): Promise; /** * Find tracks by game ID */ findByGameId(gameId: string): Promise; /** * Find tracks by category */ findByCategory(category: TrackCategory): Promise; /** * Find tracks by country */ findByCountry(country: string): Promise; /** * Search tracks by name */ searchByName(query: string): Promise; /** * Create a new track */ create(track: Track): Promise; /** * Update an existing track */ update(track: Track): Promise; /** * Delete a track by ID */ delete(id: string): Promise; /** * Check if a track exists by ID */ exists(id: string): Promise; }