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