website refactor

This commit is contained in:
2026-01-16 16:46:57 +01:00
parent 37b1aa626c
commit 2f53727702
445 changed files with 1160 additions and 1150 deletions

View File

@@ -5,7 +5,7 @@
* Immutable entity with factory methods and domain validation.
*/
import type { Entity } from '@core/shared/domain/Entity';
import { Entity } from '@core/shared/domain/Entity';
import { NotificationDomainError } from '../errors/NotificationDomainError';
import { NotificationId } from '../value-objects/NotificationId';
@@ -86,8 +86,9 @@ export interface NotificationProps {
respondedAt?: Date;
}
export class Notification implements Entity<string> {
private constructor(private readonly props: NotificationProps) {}
export class Notification extends Entity<NotificationId> {
private constructor(private readonly props: NotificationProps) {
super(props.id);}
static create(props: Omit<NotificationProps, 'id' | 'status' | 'createdAt' | 'urgency'> & {
id: string;
@@ -115,7 +116,6 @@ export class Notification implements Entity<string> {
});
}
get id(): string { return this.props.id.value; }
get recipientId(): string { return this.props.recipientId; }
get type(): NotificationType { return this.props.type; }
get title(): string { return this.props.title; }

View File

@@ -4,7 +4,7 @@
* Represents a user's notification preferences for different channels and types.
*/
import type { Entity } from '@core/shared/domain/Entity';
import { Entity } from '@core/shared/domain/Entity';
import { NotificationDomainError } from '../errors/NotificationDomainError';
import type { NotificationChannel, NotificationType } from '../types/NotificationTypes';
import { QuietHours } from '../value-objects/QuietHours';
@@ -44,8 +44,9 @@ export interface NotificationPreferenceProps {
updatedAt: Date;
}
export class NotificationPreference implements Entity<string> {
private constructor(private readonly props: NotificationPreferenceProps) {}
export class NotificationPreference extends Entity<string> {
private constructor(private readonly props: NotificationPreferenceProps) {
super(props.id);}
static create(
props: Omit<NotificationPreferenceProps, 'updatedAt'> & { updatedAt?: Date },
@@ -78,7 +79,6 @@ export class NotificationPreference implements Entity<string> {
});
}
get id(): string { return this.props.id; }
get driverId(): string { return this.props.driverId; }
get channels(): Record<NotificationChannel, ChannelPreference> { return { ...this.props.channels }; }
get typePreferences(): Partial<Record<NotificationType, TypePreference>> | undefined {

View File

@@ -1,9 +1,10 @@
import type { DomainError, CommonDomainErrorKind } from '@core/shared/errors';
import type { DomainError } from '@core/shared/errors/DomainError';
import type { CommonDomainErrorKind } from '@core/shared/errors/DomainError';
/**
* Domain Error: NotificationDomainError
*
* Implements the shared IDomainError contract for notification domain failures.
* Implements the shared DomainError contract for notification domain failures.
*/
export class NotificationDomainError extends Error implements DomainError<CommonDomainErrorKind> {
readonly name = 'NotificationDomainError';

View File

@@ -1,5 +1,5 @@
/**
* Repository Interface: INotificationPreferenceRepository
* Repository Interface: NotificationPreferenceRepository
*
* Defines the contract for persisting and retrieving NotificationPreference entities.
*/

View File

@@ -1,5 +1,5 @@
/**
* Repository Interface: INotificationRepository
* Repository Interface: NotificationRepository
*
* Defines the contract for persisting and retrieving Notification entities.
*/

View File

@@ -1,4 +1,4 @@
import type { ValueObject } from '@core/shared/domain';
import type { ValueObject } from '@core/shared/domain/ValueObject';
import { NotificationDomainError } from '../errors/NotificationDomainError';
export interface NotificationIdProps {
@@ -37,7 +37,7 @@ export class NotificationId implements ValueObject<NotificationIdProps> {
return this.props.value;
}
equals(other: IValueObject<NotificationIdProps>): boolean {
equals(other: ValueObject<NotificationIdProps>): boolean {
return this.props.value === other.props.value;
}
}

View File

@@ -1,4 +1,4 @@
import type { ValueObject } from '@core/shared/domain';
import type { ValueObject } from '@core/shared/domain/ValueObject';
import { NotificationDomainError } from '../errors/NotificationDomainError';
export interface QuietHoursProps {
@@ -63,7 +63,7 @@ export class QuietHours implements ValueObject<QuietHoursProps> {
return hour >= startHour || hour < endHour;
}
equals(other: IValueObject<QuietHoursProps>): boolean {
equals(other: ValueObject<QuietHoursProps>): boolean {
return (
this.props.startHour === other.props.startHour &&
this.props.endHour === other.props.endHour