/** * Infrastructure Adapter: InMemoryTeamStatsRepository * * In-memory implementation of ITeamStatsRepository. * Stores computed team statistics for caching and frontend queries. */ import type { ITeamStatsRepository, TeamStats } from '@core/racing/domain/repositories/ITeamStatsRepository'; import type { Logger } from '@core/shared/application'; export class InMemoryTeamStatsRepository implements ITeamStatsRepository { private stats = new Map(); constructor(private readonly logger: Logger) { this.logger.info('[InMemoryTeamStatsRepository] Initialized.'); } async getTeamStats(teamId: string): Promise { this.logger.debug(`[InMemoryTeamStatsRepository] Getting stats for team: ${teamId}`); return this.stats.get(teamId) ?? null; } getTeamStatsSync(teamId: string): TeamStats | null { this.logger.debug(`[InMemoryTeamStatsRepository] Getting stats (sync) for team: ${teamId}`); return this.stats.get(teamId) ?? null; } async saveTeamStats(teamId: string, stats: TeamStats): Promise { this.logger.debug(`[InMemoryTeamStatsRepository] Saving stats for team: ${teamId}`); this.stats.set(teamId, stats); } async getAllStats(): Promise> { this.logger.debug('[InMemoryTeamStatsRepository] Getting all stats'); return new Map(this.stats); } async clear(): Promise { this.logger.info('[InMemoryTeamStatsRepository] Clearing all stats'); this.stats.clear(); } }