/** * In-Memory Implementation: InMemoryNotificationPreferenceRepository * * Provides an in-memory storage implementation for notification preferences. */ import { NotificationPreference } from '../../domain/entities/NotificationPreference'; import type { INotificationPreferenceRepository } from '../../domain/repositories/INotificationPreferenceRepository'; export class InMemoryNotificationPreferenceRepository implements INotificationPreferenceRepository { private preferences: Map = new Map(); constructor(initialPreferences: NotificationPreference[] = []) { initialPreferences.forEach(pref => { this.preferences.set(pref.driverId, pref); }); } async findByDriverId(driverId: string): Promise { return this.preferences.get(driverId) || null; } async save(preference: NotificationPreference): Promise { this.preferences.set(preference.driverId, preference); } async delete(driverId: string): Promise { this.preferences.delete(driverId); } async getOrCreateDefault(driverId: string): Promise { const existing = this.preferences.get(driverId); if (existing) { return existing; } const defaultPreference = NotificationPreference.createDefault(driverId); this.preferences.set(driverId, defaultPreference); return defaultPreference; } }