Files
gridpilot.gg/adapters/racing/persistence/inmemory/InMemoryGameRepository.ts
2025-12-15 22:39:17 +01:00

32 lines
1.1 KiB
TypeScript

import { IGameRepository } from '@gridpilot/racing/domain/repositories/IGameRepository';
import { Game } from '@gridpilot/racing/domain/entities/Game';
import { Logger } from '@gridpilot/shared/logging/Logger';
export class InMemoryGameRepository implements IGameRepository {
private games: Map<string, Game> = new Map();
constructor(private readonly logger: Logger, initialGames: Game[] = []) {
this.logger.info('InMemoryGameRepository initialized.');
for (const game of initialGames) {
this.games.set(game.id, game);
this.logger.debug(`Seeded game: ${game.id} (${game.name}).`);
}
}
async findById(id: string): Promise<Game | null> {
this.logger.debug(`[InMemoryGameRepository] Finding game by ID: ${id}`);
const game = this.games.get(id) ?? null;
if (game) {
this.logger.info(`Found game by ID: ${id}.`);
} else {
this.logger.warn(`Game with ID ${id} not found.`);
}
return Promise.resolve(game);
}
async findAll(): Promise<Game[]> {
this.logger.debug('[InMemoryGameRepository] Finding all games.');
return Promise.resolve(Array.from(this.games.values()));
}
}