/** * Application Port: IStandingRepository * * Repository interface for Standing entity operations. * Includes methods for calculating and retrieving standings. */ import { Standing } from '../../domain/entities/Standing'; export interface IStandingRepository { /** * Find standings by league ID (sorted by position) */ findByLeagueId(leagueId: string): Promise; /** * Find standing for a specific driver in a league */ findByDriverIdAndLeagueId(driverId: string, leagueId: string): Promise; /** * Find all standings */ findAll(): Promise; /** * Create or update a standing */ save(standing: Standing): Promise; /** * Create or update multiple standings */ saveMany(standings: Standing[]): Promise; /** * Delete a standing */ delete(leagueId: string, driverId: string): Promise; /** * Delete all standings for a league */ deleteByLeagueId(leagueId: string): Promise; /** * Check if a standing exists */ exists(leagueId: string, driverId: string): Promise; /** * Recalculate standings for a league based on race results */ recalculate(leagueId: string): Promise; }