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

25 lines
775 B
TypeScript

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