<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

/**
 * Der Einmal-Code, mit dem ein Host sich zurückmeldet.
 *
 * Nur der Hash liegt hier. Der Klartext wird beim Anlegen genau einmal gezeigt,
 * steht danach in der Zwischenablage des Betreibers und in keiner Datenbank —
 * er ist ein Ausweis für den Rückweg, kein Schlüssel zu einer Auskunft (Spec §5).
 *
 * Der Hash ist indiziert, weil beide Endpunkte (`/host/progress` und
 * `/host/register`) den Host darüber auflösen und das der einzige Weg dorthin
 * ist.
 */
return new class extends Migration
{
    public function up(): void
    {
        Schema::table('hosts', function (Blueprint $table) {
            $table->string('enrolment_code_hash', 64)->nullable()->index();
            $table->timestamp('enrolment_expires_at')->nullable();
            $table->timestamp('enrolment_used_at')->nullable();
        });
    }

    public function down(): void
    {
        Schema::table('hosts', function (Blueprint $table) {
            $table->dropIndex(['enrolment_code_hash']);
            $table->dropColumn(['enrolment_code_hash', 'enrolment_expires_at', 'enrolment_used_at']);
        });
    }
};
