import { MigrationInterface, QueryRunner } from 'typeorm'; export class F62FreezeInspectionContext1790098200000 implements MigrationInterface { name = 'F62FreezeInspectionContext1790098200000'; public async up(queryRunner: QueryRunner): Promise { await queryRunner.query(` CREATE OR REPLACE FUNCTION prevent_inspection_context_mutation() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN IF NEW.operational_area_id IS DISTINCT FROM OLD.operational_area_id OR NEW.scope_asset_id IS DISTINCT FROM OLD.scope_asset_id OR NEW.operator_company_id IS DISTINCT FROM OLD.operator_company_id THEN RAISE EXCEPTION USING ERRCODE='23514', MESSAGE='El Área, Yacimiento y Operadora de una Inspección quedan fijos desde su creación'; END IF; RETURN NEW; END $$ `); await queryRunner.query(` DROP TRIGGER IF EXISTS trg_inspection_context_immutable ON inspection_visits `); await queryRunner.query(` CREATE TRIGGER trg_inspection_context_immutable BEFORE UPDATE OF operational_area_id, scope_asset_id, operator_company_id ON inspection_visits FOR EACH ROW EXECUTE FUNCTION prevent_inspection_context_mutation() `); } public async down(queryRunner: QueryRunner): Promise { await queryRunner.query(` DROP TRIGGER IF EXISTS trg_inspection_context_immutable ON inspection_visits `); await queryRunner.query('DROP FUNCTION IF EXISTS prevent_inspection_context_mutation()'); } }