import { type MigrationInterface, type QueryRunner } from 'typeorm';

/**
 * Adds supplier_id + actual_supplier_cost + supplier text placeholders
 * to `booking_hotel_items` and `booking_special_items`. Mirrors the
 * shape used by transport + activity so the settlement service can
 * raise SUPPLIER PAYABLES uniformly across all four service-line
 * types.
 *
 * No Floor snapshot at booking-create for these — hotels are priced
 * per-room per-night with no Floor matrix, specials are ad-hoc. Ops
 * fills `actual_supplier_cost` manually when assigning a supplier.
 */
export class HotelSpecialSupplierColumns1780800000000 implements MigrationInterface {
  async up(qr: QueryRunner): Promise<void> {
    await qr.query(`
      ALTER TABLE booking_hotel_items
        ADD COLUMN IF NOT EXISTS supplier_id          UUID REFERENCES suppliers(id),
        ADD COLUMN IF NOT EXISTS supplier_name_text   VARCHAR(255),
        ADD COLUMN IF NOT EXISTS supplier_phone_text  VARCHAR(20),
        ADD COLUMN IF NOT EXISTS actual_supplier_cost NUMERIC(12,2);
    `);
    await qr.query(`
      ALTER TABLE booking_special_items
        ADD COLUMN IF NOT EXISTS supplier_id          UUID REFERENCES suppliers(id),
        ADD COLUMN IF NOT EXISTS supplier_name_text   VARCHAR(255),
        ADD COLUMN IF NOT EXISTS supplier_phone_text  VARCHAR(20),
        ADD COLUMN IF NOT EXISTS actual_supplier_cost NUMERIC(12,2);
    `);
  }

  async down(qr: QueryRunner): Promise<void> {
    await qr.query(`
      ALTER TABLE booking_special_items
        DROP COLUMN IF EXISTS actual_supplier_cost,
        DROP COLUMN IF EXISTS supplier_phone_text,
        DROP COLUMN IF EXISTS supplier_name_text,
        DROP COLUMN IF EXISTS supplier_id;
    `);
    await qr.query(`
      ALTER TABLE booking_hotel_items
        DROP COLUMN IF EXISTS actual_supplier_cost,
        DROP COLUMN IF EXISTS supplier_phone_text,
        DROP COLUMN IF EXISTS supplier_name_text,
        DROP COLUMN IF EXISTS supplier_id;
    `);
  }
}
