55 lines
1.2 KiB
TypeScript
55 lines
1.2 KiB
TypeScript
/**
|
|
* 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<Standing[]>;
|
|
|
|
/**
|
|
* Find standing for a specific driver in a league
|
|
*/
|
|
findByDriverIdAndLeagueId(driverId: string, leagueId: string): Promise<Standing | null>;
|
|
|
|
/**
|
|
* Find all standings
|
|
*/
|
|
findAll(): Promise<Standing[]>;
|
|
|
|
/**
|
|
* Create or update a standing
|
|
*/
|
|
save(standing: Standing): Promise<Standing>;
|
|
|
|
/**
|
|
* Create or update multiple standings
|
|
*/
|
|
saveMany(standings: Standing[]): Promise<Standing[]>;
|
|
|
|
/**
|
|
* Delete a standing
|
|
*/
|
|
delete(leagueId: string, driverId: string): Promise<void>;
|
|
|
|
/**
|
|
* Delete all standings for a league
|
|
*/
|
|
deleteByLeagueId(leagueId: string): Promise<void>;
|
|
|
|
/**
|
|
* Check if a standing exists
|
|
*/
|
|
exists(leagueId: string, driverId: string): Promise<boolean>;
|
|
|
|
/**
|
|
* Recalculate standings for a league based on race results
|
|
*/
|
|
recalculate(leagueId: string): Promise<Standing[]>;
|
|
} |