/** * RatingCalculatedEvent * * Event published when a driver's rating is calculated. */ import { DomainEvent } from '../../../shared/ports/EventPublisher'; import { Rating, RatingJSON } from '../Rating'; export interface RatingCalculatedEventJSON { type: string; timestamp: string; rating: RatingJSON; } export class RatingCalculatedEvent implements DomainEvent { readonly type = 'RatingCalculatedEvent'; readonly timestamp: Date; [key: string]: unknown; constructor(private readonly rating: Rating) { this.timestamp = new Date(); } getRating(): Rating { return this.rating; } toJSON(): RatingCalculatedEventJSON { return { type: this.type, timestamp: this.timestamp.toISOString(), rating: this.rating.toJSON(), }; } }