fix: make F4 lifecycle constraint rollback executable

This commit is contained in:
2026-09-08 09:24:50 -03:00
parent 271290abe4
commit 57739dcb3e
@@ -97,6 +97,20 @@ export class F4AlignDocumentLifecycleConstraints1790000600000 implements Migrati
}
public async down(queryRunner: QueryRunner): Promise<void> {
// Primero restauramos la guarda D5. De otro modo el propio trigger F4 impediría
// traducir una fila SEALED a CLOSED durante el rollback.
await queryRunner.query(`
CREATE OR REPLACE FUNCTION dhv2_guard_closed_act_immutable()
RETURNS trigger LANGUAGE plpgsql AS $$
BEGIN
IF OLD.status IN ('CLOSED','RECTIFIED') THEN
RAISE EXCEPTION 'El acta cerrada es inmutable';
END IF;
RETURN NEW;
END
$$
`);
// El contrato D5 no conoce los estados F4. Reducimos las representaciones
// nuevas a sus equivalentes históricos antes de restaurar sus CHECKs.
await queryRunner.query(`
@@ -189,17 +203,5 @@ export class F4AlignDocumentLifecycleConstraints1790000600000 implements Migrati
END
$$
`);
await queryRunner.query(`
CREATE OR REPLACE FUNCTION dhv2_guard_closed_act_immutable()
RETURNS trigger LANGUAGE plpgsql AS $$
BEGIN
IF OLD.status IN ('CLOSED','RECTIFIED') THEN
RAISE EXCEPTION 'El acta cerrada es inmutable';
END IF;
RETURN NEW;
END
$$
`);
}
}