From 29c1abf90745e56a9d255de0399b2c7c79a903d8 Mon Sep 17 00:00:00 2001 From: enlineawork Date: Sun, 6 Sep 2026 22:48:01 -0300 Subject: [PATCH] =?UTF-8?q?fix:=20preservar=20etiquetas=20t=C3=A9cnicas=20?= =?UTF-8?q?extensas=20del=20Excel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0000-phase-f2-2-1-long-reference-labels.ts | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 api-v3/src/database/migrations/1789754350000-phase-f2-2-1-long-reference-labels.ts diff --git a/api-v3/src/database/migrations/1789754350000-phase-f2-2-1-long-reference-labels.ts b/api-v3/src/database/migrations/1789754350000-phase-f2-2-1-long-reference-labels.ts new file mode 100644 index 0000000..f995300 --- /dev/null +++ b/api-v3/src/database/migrations/1789754350000-phase-f2-2-1-long-reference-labels.ts @@ -0,0 +1,28 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class PhaseF221LongReferenceLabels1789754350000 implements MigrationInterface { + name = 'PhaseF221LongReferenceLabels1789754350000'; + + public async up(queryRunner: QueryRunner): Promise { + // La matriz APLICACION APP contiene denominaciones técnicas descriptivas que + // legítimamente superan el límite histórico de 160 caracteres. No se recorta + // información de la fuente: ampliamos sólo columnas descriptivas. + await queryRunner.query(`ALTER TABLE asset_types ALTER COLUMN name TYPE varchar(500)`); + await queryRunner.query(`ALTER TABLE asset_attribute_definitions ALTER COLUMN name TYPE varchar(500)`); + } + + public async down(queryRunner: QueryRunner): Promise { + const rows = (await queryRunner.query(` + SELECT + coalesce(max(length(name)),0)::integer AS max_type_name, + (SELECT coalesce(max(length(name)),0)::integer FROM asset_attribute_definitions) AS max_attribute_name + FROM asset_types + `)) as Array<{ max_type_name: number; max_attribute_name: number }>; + + if ((rows[0]?.max_type_name ?? 0) > 160 || (rows[0]?.max_attribute_name ?? 0) > 160) { + throw new Error('F2.2.1 no puede reducir etiquetas a 160 caracteres sin pérdida de información'); + } + await queryRunner.query(`ALTER TABLE asset_types ALTER COLUMN name TYPE varchar(160)`); + await queryRunner.query(`ALTER TABLE asset_attribute_definitions ALTER COLUMN name TYPE varchar(160)`); + } +}