Files
ftb-project-management/apps/web/lib/requirement-version-link.ts
2026-07-02 19:50:47 +08:00

30 lines
959 B
TypeScript

import type { Requirement } from './requirement';
type RequirementVersionPatch = Pick<Partial<Requirement>, 'versionId' | 'addedToVersionBy' | 'status'>;
const VERSION_SCOPED_REQUIREMENT_STATUSES = new Set<Requirement['status']>(['planned', 'developing', 'testing', 'released']);
export function getRequirementVersionUnlinkPatch(
requirement: Pick<Requirement, 'status'>,
): RequirementVersionPatch {
return {
versionId: undefined,
addedToVersionBy: undefined,
...(VERSION_SCOPED_REQUIREMENT_STATUSES.has(requirement.status) ? { status: 'adopted' as const } : {}),
};
}
export function getRequirementVersionSelectionPatch(
requirement: Pick<Requirement, 'status' | 'addedToVersionBy'>,
versionId?: string,
addedBy?: string,
): RequirementVersionPatch {
if (!versionId) {
return getRequirementVersionUnlinkPatch(requirement);
}
return {
versionId,
addedToVersionBy: addedBy || requirement.addedToVersionBy,
};
}