This commit is contained in:
2025-12-11 13:50:38 +01:00
parent e4c1be628d
commit c7e5de40d6
212 changed files with 2965 additions and 763 deletions

View File

@@ -4,16 +4,17 @@
* Manages user notification preferences.
*/
import type { AsyncUseCase } from '@gridpilot/shared/application';
import { NotificationPreference } from '../../domain/entities/NotificationPreference';
import type { ChannelPreference, TypePreference } from '../../domain/entities/NotificationPreference';
import type { INotificationPreferenceRepository } from '../../domain/repositories/INotificationPreferenceRepository';
import type { NotificationType } from '../../domain/value-objects/NotificationType';
import type { NotificationChannel } from '../../domain/value-objects/NotificationChannel';
import type { NotificationType, NotificationChannel } from '../../domain/types/NotificationTypes';
import { NotificationDomainError } from '../../domain/errors/NotificationDomainError';
/**
* Query: GetNotificationPreferencesQuery
*/
export class GetNotificationPreferencesQuery {
export class GetNotificationPreferencesQuery implements AsyncUseCase<string, NotificationPreference> {
constructor(
private readonly preferenceRepository: INotificationPreferenceRepository,
) {}
@@ -32,7 +33,7 @@ export interface UpdateChannelPreferenceCommand {
preference: ChannelPreference;
}
export class UpdateChannelPreferenceUseCase {
export class UpdateChannelPreferenceUseCase implements AsyncUseCase<UpdateChannelPreferenceCommand, void> {
constructor(
private readonly preferenceRepository: INotificationPreferenceRepository,
) {}
@@ -53,7 +54,7 @@ export interface UpdateTypePreferenceCommand {
preference: TypePreference;
}
export class UpdateTypePreferenceUseCase {
export class UpdateTypePreferenceUseCase implements AsyncUseCase<UpdateTypePreferenceCommand, void> {
constructor(
private readonly preferenceRepository: INotificationPreferenceRepository,
) {}
@@ -74,7 +75,7 @@ export interface UpdateQuietHoursCommand {
endHour: number | undefined;
}
export class UpdateQuietHoursUseCase {
export class UpdateQuietHoursUseCase implements AsyncUseCase<UpdateQuietHoursCommand, void> {
constructor(
private readonly preferenceRepository: INotificationPreferenceRepository,
) {}
@@ -103,7 +104,7 @@ export interface SetDigestModeCommand {
frequencyHours?: number;
}
export class SetDigestModeUseCase {
export class SetDigestModeUseCase implements AsyncUseCase<SetDigestModeCommand, void> {
constructor(
private readonly preferenceRepository: INotificationPreferenceRepository,
) {}