import { err, ok, type CommandContext } from "@tailor-platform/erp-kit/core"; import type { Transaction } from "../generated/kysely-tailordb"; import { WorkRegimeNotFoundError, InvalidWorkRegimeStatusError } from "../lib/errors.generated"; export interface ReactivateWorkRegimeInput { id: string; } /** * Function: reactivateWorkRegime * Description: Returns an INACTIVE work-regime catalog entry to ACTIVE so it * is selectable again. Rejected when the entry is already ACTIVE. */ export async function run(db: Transaction, input: ReactivateWorkRegimeInput, _ctx: CommandContext) { const workRegime = await db .selectFrom("WorkRegime") .selectAll() .where("id", "=", input.id) .forUpdate() .executeTakeFirst(); if (!workRegime) { return err(new WorkRegimeNotFoundError(input.id)); } if (workRegime.status !== "INACTIVE") { return err(new InvalidWorkRegimeStatusError(`${input.id}:${workRegime.status}`)); } const updated = await db .updateTable("WorkRegime") .set({ status: "ACTIVE" }) .where("id", "=", input.id) .returningAll() .executeTakeFirstOrThrow(); return ok({ workRegime: updated }); }