Add historic airports to database

This commit is contained in:
2026-08-22 14:13:37 +10:00
parent 3c66a3945c
commit 4a9b1ad56a
5 changed files with 181 additions and 13 deletions
+19 -9
View File
@@ -58,28 +58,38 @@ class SearchController extends Controller
{
$q = request('q', '');
$len = strlen($q);
$includeInactive = request()->boolean('include_inactive');
if ($len < 3) return [];
return Airport::with('region.country')
->when(!$includeInactive, fn($query) => $query->where('active', true))
->when($len === 3, fn($query) => $query->where('iata_code', 'ilike', $q))
->when($len >= 4, fn($query) => $query->where(function ($sub) use ($q, $len) {
$sub->when($len === 4, fn($s) => $s->where('icao_code', 'ilike', $q))
->orWhere('name', 'ilike', "%{$q}%")
->orWhere('municipality', 'ilike', "%{$q}%");
})->orderByRaw("
CASE
WHEN icao_code = ? THEN 0
WHEN iata_code = ? THEN 1
ELSE 2
END
", [$q, $q]))
}))
->orderByRaw("
CASE
WHEN active THEN 0
ELSE 1
END
")
->orderByRaw("
CASE
WHEN icao_code = ? THEN 0
WHEN iata_code = ? THEN 1
ELSE 2
END
", [$q, $q])
->limit(15)
->get(['id', 'name', 'municipality', 'iata_code', 'icao_code', 'region_id'])
->map(fn($airport) => [
->get(['id', 'name', 'municipality', 'iata_code', 'icao_code', 'region_id', 'active'])
->map(fn(Airport $airport) => [
'value' => $airport->id,
'title' => $airport->display_name,
'country_code' => strtolower($airport->region->country->code),
'active' => $airport->active,
])
->values();
}