<?php

/**
 * 文件功能：为 username_blacklist 表新增 type 和 reason 字段
 *
 * type   区分临时保留（改名后30天）与永久禁用（管理员设置）
 * reason 记录永久禁用的原因（如：攻击性词汇、领导人名称等）
 */

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

return new class extends Migration
{
    /**
     * 执行迁移：新增 type 和 reason 列，同时将 reserved_until 改为可空。
     */
    public function up(): void
    {
        Schema::table('username_blacklist', function (Blueprint $table) {
            // 类型：temp = 改名后临时保留；permanent = 管理员永久禁用
            $table->enum('type', ['temp', 'permanent'])
                ->default('temp')
                ->after('username')
                ->comment('temp=改名临时保留 | permanent=管理员永久禁用词');

            // permanent 记录无到期时间，需要允许 NULL
            $table->timestamp('reserved_until')->nullable()->change();

            // 禁用原因（permanent 时填写）
            $table->string('reason', 100)
                ->nullable()
                ->after('reserved_until')
                ->comment('永久禁用原因（攻击性词汇、领导人名称等）');
        });
    }

    /**
     * 回滚：删除新增列。
     */
    public function down(): void
    {
        Schema::table('username_blacklist', function (Blueprint $table) {
            $table->dropColumn(['type', 'reason']);
        });
    }
};
