Files
gridpilot.gg/core/racing/application/use-cases/DriverStatsUseCase.ts
2026-01-16 23:44:37 +01:00

39 lines
1.1 KiB
TypeScript

/**
* Application Use Case Interface: DriverStatsUseCase
*
* Use case for computing detailed driver statistics from race results and standings.
* This is an application layer concern that orchestrates domain data.
*/
import type { ResultRepository } from '../../domain/repositories/ResultRepository';
import type { StandingRepository } from '../../domain/repositories/StandingRepository';
import type { Logger } from '@core/shared/domain/Logger';
export interface DriverStats {
rating: number;
safetyRating: number;
sportsmanshipRating: number;
totalRaces: number;
wins: number;
podiums: number;
dnfs: number;
avgFinish: number;
bestFinish: number;
worstFinish: number;
consistency: number;
experienceLevel: string;
overallRank: number | null;
}
export class DriverStatsUseCase {
constructor(
_resultRepository: ResultRepository,
_standingRepository: StandingRepository,
private readonly _logger: Logger,
) {}
async getDriverStats(driverId: string): Promise<DriverStats | null> {
this._logger.debug(`Getting stats for driver ${driverId}`);
return null;
}
}