Files
FlightsAPI/database/migrations/2026_04_05_064200_add_fucking_lufthansa.php
T
2026-04-05 17:49:16 +10:00

81 lines
2.9 KiB
PHP

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
private array $countryCodes = [
'Burma' => 'MM', // Myanmar
'Ceylon' => 'LK', // Sri Lanka
'congodr' => 'CD', // Congo, Dem. Republic
'cotedivoire' => 'CI', // Côte d'Ivoire
'dominicanrep' => 'DO', // Dominican Republic
'Kenya, Uganda and Tanzania' => 'KE', // East African Airways — headquartered in Nairobi
'Korea, Republic of' => 'KR', // South Korea
'Malaysia / Singapore' => 'MY', // Malaysia-Singapore Airlines predecessor
'Rhodesia' => 'ZW', // Zimbabwe
'Saudia Arabia' => 'SA', // Typo for Saudi Arabia
'St. Barthelemy' => 'BL', // Saint Barthélemy
'St. Martin' => 'MF', // Saint Martin (French side — change to SX for Dutch)
'Tanzania, United Republic of' => 'TZ',
'uae' => 'AE', // United Arab Emirates
'United States of America' => 'US',
'West Samoa' => 'WS', // Samoa
];
public function up(): void
{
// 1. Insert Lufthansa
DB::table('airlines')->insert([
'IATA_code' => 'LH',
'ICAO_code' => 'DLH',
'name' => 'Lufthansa',
'internal_name' => 'lufthansa',
'country_code' => 'DE',
'country_name' => 'Germany',
'active' => true,
'logo' => 'LH.png',
]);
// 2. Add nullable country_id FK column
Schema::table('airlines', function (Blueprint $table) {
$table->foreignId('country_id')
->nullable()
->after('active')
->constrained('countries', 'id')
->onUpdate('cascade')
->onDelete('set null');
});
foreach ($this->countryCodes as $countryName => $isoCode) {
DB::statement("
UPDATE airlines a
SET country_id = c.id
FROM countries c
WHERE c.code = :code
AND a.country_name = :name
AND a.country_id IS NULL
", [
'code' => $isoCode,
'name' => $countryName,
]);
}
}
public function down(): void
{
// Remove the FK column
Schema::table('airlines', function (Blueprint $table) {
$table->dropConstrainedForeignId('country_id');
});
// Remove Lufthansa (identified by unique ICAO code)
DB::table('airlines')->where('ICAO_code', 'DLH')->delete();
}
};