/
PostmenBlake
/
NotificationPreferencesService
Обзор
Документация
Войти
/
PostmenBlake
/
NotificationPreferencesService
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/domain/services/PreferencesService.ts
42 строки
1 KB
kurava
feat: initial commit - Notification Preferences Service
17 июн 2026, 09:11
17 июн 2026, 09:11
48825c3
Код
Авторство
О чём код?
import { UserPreferences } from '../entities/UserPreferences'; import { UpdatePreferencesRequest } from '../types/notification'; export interface PreferencesRepository { getByUserId(userId: string): Promise<UserPreferences | null>; save(preferences: UserPreferences): Promise<void>; createDefault(userId: string): Promise<UserPreferences>; } export class PreferencesService { constructor(private repository: PreferencesRepository) {} async getPreferences(userId: string): Promise<UserPreferences | null> { return this.repository.getByUserId(userId); } async updatePreferences(request: UpdatePreferencesRequest): Promise<UserPreferences> { let prefs = await this.repository.getByUserId(request.userId); if (!prefs) { prefs = await this.repository.createDefault(request.userId); } if (request.notificationType && request.channel !== undefined) { prefs.setPreference( request.notificationType, request.channel, request.enabled !== undefined ? request.enabled : true, request.quietHours || null ); } await this.repository.save(prefs); return prefs; } async initializeUser(userId: string): Promise<UserPreferences> { const existing = await this.repository.getByUserId(userId); if (existing) return existing; return this.repository.createDefault(userId); } }