import { MigrationInterface, QueryRunner } from 'typeorm';

export class SeedDefaultWagonTypes1750200000000 implements MigrationInterface {
  name = 'SeedDefaultWagonTypes1750200000000';

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(`
      INSERT INTO freight.wagon_types (
        code,
        name,
        capacity_tons,
        length_meters,
        max_wagons_per_train,
        supported_load_types,
        is_active
      )
      VALUES
        ('NW7', 'Double deck sedan wagon', 22, 26.066, NULL, ARRAY['vehicles', 'sedan'], true),
        ('NW5', 'Flat wagon (container)', 70, 14.000, 53, ARRAY['container', 'steel', 'machinery'], true),
        ('PW2', 'Box wagon', 70, 17.066, 18, ARRAY['general cargo', 'break bulk'], true),
        ('GW2', 'Tank wagon', 70, 12.228, 37, ARRAY['liquid', 'fuel'], true),
        ('CW4', 'Gondola covered wagon', 70, 13.976, 37, ARRAY['covered bulk cargo'], true),
        ('CW3', 'Gondola open wagon', 70, 13.976, NULL, ARRAY['open bulk cargo'], true),
        ('KW2', 'Hopper covered wagon', 69, 16.466, NULL, ARRAY['bulk grains'], true),
        ('KW3', 'Hopper open wagon', 70, 14.400, NULL, ARRAY['coal', 'bulk cargo'], true),
        ('NW6', 'Flat wagon (long cargo)', 70, 18.560, NULL, ARRAY['long cargo'], true),
        ('BW1', 'Refrigerated wagon', 38, 21.996, NULL, ARRAY['refrigerated cargo'], true)
      ON CONFLICT (code) DO UPDATE SET
        name = EXCLUDED.name,
        capacity_tons = EXCLUDED.capacity_tons,
        length_meters = EXCLUDED.length_meters,
        max_wagons_per_train = EXCLUDED.max_wagons_per_train,
        supported_load_types = EXCLUDED.supported_load_types,
        is_active = true,
        deleted_at = NULL,
        updated_at = now();
    `);
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(`
      DELETE FROM freight.wagon_types
      WHERE code IN ('NW7', 'NW5', 'PW2', 'GW2', 'CW4', 'CW3', 'KW2', 'KW3', 'NW6', 'BW1');
    `);
  }
}
