© 2026 Hedgehog Software, LLC
const VALID_TRANSITIONS = /**@type {const} */ ({ PENDING_UPLOAD: ["ACTIVE", "DELETED"], ACTIVE: ["PENDING_DELETION", "DELETED"], PENDING_DELETION: ["ACTIVE", "DELETED"], DELETED: [], }); /** * * @param {number} id * @param {"ACTIVE" | "PENDING_DELETION" | "DELETED" | "PENDING_UPLOAD"} newStatus * @returns */ async function updateFileStatus(id, newStatus) { const file = await getFile(id); if (!file) throw new Error("File not found"); const validNext = VALID_TRANSITIONS[file.status]; if (!validNext.includes(newStatus)) { throw new Error( `Invalid transition from ${file.status} to ${newStatus}`, ); } return await prisma.file.update({ where: { id }, data: { status: newStatus }, }); }
validNext.includes(newStatus)