import type { IRankingService, DriverRanking } from '@core/racing/domain/services/IRankingService'; import type { Logger } from '@core/shared/application'; import { DriverStatsStore } from './DriverStatsStore'; export class InMemoryRankingService implements IRankingService { constructor(private readonly logger: Logger) { this.logger.info('InMemoryRankingService initialized.'); } getAllDriverRankings(): DriverRanking[] { this.logger.debug('[InMemoryRankingService] Getting all driver rankings.'); // Get stats from the DriverStatsStore const statsStore = DriverStatsStore.getInstance(); const allStats = statsStore.getAllStats(); // Convert stats to rankings const rankings: DriverRanking[] = []; allStats.forEach((stats, driverId) => { rankings.push({ driverId, rating: stats.rating, overallRank: stats.overallRank ?? 0, }); }); // Sort by rating descending to get proper rankings rankings.sort((a, b) => b.rating - a.rating); // Assign ranks rankings.forEach((ranking, index) => { ranking.overallRank = index + 1; }); return rankings; } }