refactor(f4): retire legacy inspection fields

This commit is contained in:
2026-09-08 08:45:54 -03:00
parent 49b321ca87
commit 5404409042
@@ -0,0 +1,77 @@
import { MigrationInterface, QueryRunner } from 'typeorm';
/**
* F4 elimina dos campos heredados de la planificación original de Inspecciones:
* - title: la Inspección se identifica por su código autogenerado.
* - planned_end_at: la planificación sólo define la fecha/hora prevista de inicio.
*
* Se conserva un índice sobre planned_start_at porque sigue siendo un criterio de
* orden y filtro operativo. El rollback reconstruye la forma original de D1.
*/
export class F4RemoveInspectionLegacyFields1790000500000 implements MigrationInterface {
name = 'F4RemoveInspectionLegacyFields1790000500000';
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`DROP INDEX IF EXISTS idx_inspection_visits_planned_dates`);
await queryRunner.query(`
ALTER TABLE inspection_visits
DROP CONSTRAINT IF EXISTS chk_inspection_visits_planned_dates
`);
await queryRunner.query(`ALTER TABLE inspection_visits DROP COLUMN IF EXISTS planned_end_at`);
await queryRunner.query(`ALTER TABLE inspection_visits DROP COLUMN IF EXISTS title`);
await queryRunner.query(`
CREATE INDEX IF NOT EXISTS idx_inspection_visits_planned_start_at
ON inspection_visits (planned_start_at)
`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`DROP INDEX IF EXISTS idx_inspection_visits_planned_start_at`);
await queryRunner.query(`
ALTER TABLE inspection_visits
ADD COLUMN IF NOT EXISTS title varchar(200)
`);
await queryRunner.query(`
UPDATE inspection_visits
SET title = code
WHERE title IS NULL
`);
await queryRunner.query(`
ALTER TABLE inspection_visits
ALTER COLUMN title SET NOT NULL
`);
await queryRunner.query(`
ALTER TABLE inspection_visits
ADD COLUMN IF NOT EXISTS planned_end_at timestamptz
`);
await queryRunner.query(`
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1
FROM pg_constraint
WHERE conname = 'chk_inspection_visits_planned_dates'
AND conrelid = 'inspection_visits'::regclass
) THEN
ALTER TABLE inspection_visits
ADD CONSTRAINT chk_inspection_visits_planned_dates CHECK (
planned_start_at IS NULL
OR planned_end_at IS NULL
OR planned_end_at >= planned_start_at
);
END IF;
END
$$
`);
await queryRunner.query(`
CREATE INDEX IF NOT EXISTS idx_inspection_visits_planned_dates
ON inspection_visits (planned_start_at, planned_end_at)
`);
}
}