<?php

use App\Services\Dns\LegacyRecordIds;
use Illuminate\Database\Migrations\Migration;

/**
 * Bringt gespeicherte Record-IDs der ALTEN Hetzner-DNS-API auf das
 * `{name}/{typ}` der Cloud-API — dort, wo das ohne Raten geht.
 *
 * Läuft beim Deploy, also auf einer Installation mit echten Zeilen. Genau das
 * war der Punkt, den ich im ersten Anlauf verfehlt hatte: ich hatte auf der
 * Entwicklungsdatenbank null Zeilen gezählt und daraus geschlossen, es gebe
 * nirgends welche. Der Live-Server ist eine andere Installation.
 *
 * Umgeschrieben wird nur `dns_records` — dort steht `fqdn` und `type` neben der
 * ID, der Name folgt daraus exakt. `hosts.dns_record_id` und die
 * `dns_record_id`-Laufressourcen bleiben, wie sie sind: dort steht die volle
 * Adresse nicht, und eine geratene Löschung träfe womöglich einen fremden
 * Eintrag. Für die sorgt HttpHetznerDnsClient::deleteRecord() — eine Alt-ID
 * lässt es mit einem Log-Eintrag durch, statt den Abbau des Hosts für immer zu
 * blockieren.
 */
return new class extends Migration
{
    public function up(): void
    {
        $rewritten = app(LegacyRecordIds::class)->migrate();

        if ($rewritten > 0) {
            echo "  migrated {$rewritten} legacy DNS record id(s) to the cloud API format\n";
        }
    }

    /**
     * Kein down(). Der alte Endpunkt ist abgeschaltet — eine Rückwandlung
     * ergäbe IDs, mit denen niemand mehr etwas anfangen kann, und das
     * ursprüngliche `rec-…` ist aus dem neuen Wert ohnehin nicht
     * wiederherstellbar.
     */
    public function down(): void {}
};
