Files
gridpilot.gg/packages/racing/domain/entities/Game.ts
2025-12-11 13:50:38 +01:00

27 lines
750 B
TypeScript

import { RacingDomainValidationError } from '../errors/RacingDomainError';
import type { IEntity } from '@gridpilot/shared/domain';
export class Game implements IEntity<string> {
readonly id: string;
readonly name: string;
private constructor(props: { id: string; name: string }) {
this.id = props.id;
this.name = props.name;
}
static create(props: { id: string; name: string }): Game {
if (!props.id || props.id.trim().length === 0) {
throw new RacingDomainValidationError('Game ID is required');
}
if (!props.name || props.name.trim().length === 0) {
throw new RacingDomainValidationError('Game name is required');
}
return new Game({
id: props.id,
name: props.name,
});
}
}