import { MigrationInterface, QueryRunner } from 'typeorm';

/**
 * Bulk / break-bulk freight can now declare HOW MUCH of the cargo is hazardous
 * or refrigerated, in the cargo's own unit of measure (tons for PER_TON, item
 * count for PER_ITEM). These two columns hold that amount on the booking; they
 * stay 0 for container freight (which tracks it per line on booking_container)
 * and for bulk cargo with no hazardous/reefer portion. The existing
 * is_hazardous / is_reefer booleans remain the surcharge trigger.
 */
export class AddBulkHazmatReeferQuantity1828000000000 implements MigrationInterface {
  name = 'AddBulkHazmatReeferQuantity1828000000000';

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE freight.bookings ADD COLUMN IF NOT EXISTS bulk_hazardous_quantity NUMERIC(12,3) NOT NULL DEFAULT 0;`,
    );
    await queryRunner.query(
      `ALTER TABLE freight.bookings ADD COLUMN IF NOT EXISTS bulk_reefer_quantity NUMERIC(12,3) NOT NULL DEFAULT 0;`,
    );
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE freight.bookings DROP COLUMN IF EXISTS bulk_reefer_quantity;`,
    );
    await queryRunner.query(
      `ALTER TABLE freight.bookings DROP COLUMN IF EXISTS bulk_hazardous_quantity;`,
    );
  }
}
