From 63671686a90c70c4b3c6737cce418430c33bee9e Mon Sep 17 00:00:00 2001 From: enlineawork Date: Mon, 7 Sep 2026 20:13:28 -0300 Subject: [PATCH] =?UTF-8?q?F4.8=20=C2=B7=20sellado=20f=C3=ADsico=20del=20A?= =?UTF-8?q?cta?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../1790056800000-phase-f4-sealed-acts.ts | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 api-v3/src/database/migrations/1790056800000-phase-f4-sealed-acts.ts diff --git a/api-v3/src/database/migrations/1790056800000-phase-f4-sealed-acts.ts b/api-v3/src/database/migrations/1790056800000-phase-f4-sealed-acts.ts new file mode 100644 index 0000000..87e9493 --- /dev/null +++ b/api-v3/src/database/migrations/1790056800000-phase-f4-sealed-acts.ts @@ -0,0 +1,43 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class PhaseF4SealedActs1790056800000 implements MigrationInterface { + name = 'PhaseF4SealedActs1790056800000'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + UPDATE inspection_acts + SET sealed_at = COALESCE(closed_at, updated_at, CURRENT_TIMESTAMP), + sealed_by = closed_by + WHERE status = 'CLOSED' + AND sealed_at IS NULL + `); + await queryRunner.query(` + CREATE OR REPLACE FUNCTION dhv2_f4_stamp_act_seal() + RETURNS trigger + LANGUAGE plpgsql + AS $$ + BEGIN + IF NEW.status = 'CLOSED' AND OLD.status IS DISTINCT FROM 'CLOSED' THEN + NEW.sealed_at := COALESCE(NEW.closed_at, CURRENT_TIMESTAMP); + NEW.sealed_by := NEW.closed_by; + END IF; + RETURN NEW; + END; + $$ + `); + await queryRunner.query(` + DROP TRIGGER IF EXISTS trg_dhv2_f4_stamp_act_seal ON inspection_acts + `); + await queryRunner.query(` + CREATE TRIGGER trg_dhv2_f4_stamp_act_seal + BEFORE UPDATE OF status ON inspection_acts + FOR EACH ROW + EXECUTE FUNCTION dhv2_f4_stamp_act_seal() + `); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP TRIGGER IF EXISTS trg_dhv2_f4_stamp_act_seal ON inspection_acts`); + await queryRunner.query(`DROP FUNCTION IF EXISTS dhv2_f4_stamp_act_seal()`); + } +}