Files
gridpilot.gg/core/racing/domain/entities/prize/PrizeStatus.ts
2025-12-17 00:33:13 +01:00

25 lines
743 B
TypeScript

import { RacingDomainValidationError } from '../../errors/RacingDomainError';
export type PrizeStatusValue = 'pending' | 'awarded' | 'paid' | 'cancelled';
export class PrizeStatus {
private constructor(private readonly value: PrizeStatusValue) {}
static create(value: string): PrizeStatus {
const validStatuses: PrizeStatusValue[] = ['pending', 'awarded', 'paid', 'cancelled'];
if (!validStatuses.includes(value as PrizeStatusValue)) {
throw new RacingDomainValidationError(`Invalid prize status: ${value}`);
}
return new PrizeStatus(value as PrizeStatusValue);
}
toString(): PrizeStatusValue {
return this.value;
}
equals(other: PrizeStatus): boolean {
return this.value === other.value;
}
}