Files
edr-platform/apps/edr-freight-api/src/migrations/1880000000000-AddVehicleStatuses.ts
natib21 e429a2cebf fix
2026-07-02 13:15:44 +00:00

30 lines
1.2 KiB
TypeScript

import { MigrationInterface, QueryRunner } from "typeorm";
/**
* Add FREE and BUSY statuses to vehicle status enum.
*/
export class AddVehicleStatuses1880000000000 implements MigrationInterface {
name = "AddVehicleStatuses1880000000000";
public async up(queryRunner: QueryRunner): Promise<void> {
// Create enum type if it doesn't exist
await queryRunner.query(`
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'vehicles_status_enum' AND typnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'freight')) THEN
CREATE TYPE freight.vehicles_status_enum AS ENUM ('ACTIVE', 'FREE', 'BUSY', 'MAINTENANCE', 'RETIRED', 'OUT_OF_SERVICE');
ELSE
-- Add values if enum already exists but doesn't have them
ALTER TYPE freight.vehicles_status_enum ADD VALUE IF NOT EXISTS 'FREE' BEFORE 'MAINTENANCE';
ALTER TYPE freight.vehicles_status_enum ADD VALUE IF NOT EXISTS 'BUSY' AFTER 'FREE';
END IF;
END $$;
`);
}
public async down(_queryRunner: QueryRunner): Promise<void> {
// Note: Postgres cannot drop individual enum values, so the down migration is a no-op
// The enum values FREE and BUSY will remain but will be unused after downgrade
}
}