Files
ulitka/src/modules/issue/domain/value-objects/issue-status.vo.ts
T
vadim 7b999a670c
Gitea Actions Demo / Deploy (push) Failing after 18s
init
2026-09-24 10:34:27 +03:00

35 lines
1.1 KiB
TypeScript

export const ISSUE_STATUSES = [
{ name: 'Open', alias: 'OPEN', color: 'surface-light' },
{ name: 'In progress', alias: 'IN_PROGRESS', color: 'warning' },
{ name: 'Done', alias: 'DONE', color: 'success' },
{ name: 'Cancelled', alias: 'CANCELLED', color: 'primary' },
] as const;
export type IssueStatusValue = (typeof ISSUE_STATUSES)[number]['alias'];
const ISSUE_STATUS_ALIASES = ISSUE_STATUSES.map((status) => status.alias);
export class IssueStatus {
private constructor(private readonly _value: IssueStatusValue) {}
static create(value: string): IssueStatus {
if (!ISSUE_STATUS_ALIASES.includes(value as IssueStatusValue)) {
throw new Error(`Недопустимый статус задачи: "${value}". Разрешены: ${ISSUE_STATUS_ALIASES.join(', ')}`);
}
return new IssueStatus(value as IssueStatusValue);
}
static open(): IssueStatus {
return new IssueStatus('OPEN');
}
get value(): IssueStatusValue {
return this._value;
}
equals(other: IssueStatus): boolean {
return this._value === other.value;
}
}