<?php

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

/**
 * Wie groß ein gekaufter Block ist — auf der Buchung, nicht in der Konfiguration.
 *
 * `subscription_addons` friert seit jeher ein, was der Kunde zu ZAHLEN
 * zugesagt hat. Was er dafür BEKOMMT, stand weiter in der Konfiguration und
 * wurde bei jeder Anzeige neu gelesen. Solange es eine einzige Packungsgröße
 * gab, war das folgenlos; mit dem Zuschnitt von 100 GB auf 20 GB wäre es der
 * stille Verlust von 80 GB je gekauftem Block.
 *
 * Die 100 steht hier als Zahl und nicht als config()-Aufruf. Was verkauft
 * wurde, ist Geschichte: eine Migration, die den Nachtrag aus der
 * Konfiguration zöge, schriebe je nach Reihenfolge des Deployments 20 hinein
 * und wäre damit genau der Fehler, den sie behebt.
 */
return new class extends Migration
{
    public function up(): void
    {
        Schema::table('subscription_addons', function (Blueprint $table) {
            // 0 für alles, was kein Speicher ist: ein Support-Tarif hat keine
            // Größe, und NULL wäre eine dritte Antwort auf eine Frage mit zwei.
            $table->unsignedInteger('pack_gb')->default(0)->after('quantity');
            $table->unsignedInteger('pack_disk_gb')->default(0)->after('pack_gb');
        });

        DB::table('subscription_addons')
            ->where('addon_key', 'storage')
            ->update(['pack_gb' => 100, 'pack_disk_gb' => 100]);
    }

    public function down(): void
    {
        Schema::table('subscription_addons', function (Blueprint $table) {
            $table->dropColumn(['pack_gb', 'pack_disk_gb']);
        });
    }
};
