<?php

/**
 * 文件功能：将 username_blacklist.reserved_until 修改为可空列
 *
 * permanent 类型的永久禁用词无到期时间，reserved_until 必须支持 NULL。
 * 同时用 DB::statement 直接 ALTER，确保在所有 MySQL 模式下都能生效。
 */

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

return new class extends Migration
{
    /**
     * 执行迁移：将 reserved_until 列修改为 NULL 允许。
     */
    public function up(): void
    {
        DB::statement(
            "ALTER TABLE `username_blacklist`
             MODIFY `reserved_until` TIMESTAMP NULL DEFAULT NULL
             COMMENT '保留截止时间（temp 类型有效；permanent 类型为 NULL）'"
        );
    }

    /**
     * 回滚：恢复为 NOT NULL（会导致现有 NULL 行出错，生产慎用）。
     */
    public function down(): void
    {
        // 先把现有 NULL 行补一个兜底值，再改回 NOT NULL
        DB::statement('UPDATE `username_blacklist` SET `reserved_until` = NOW() + INTERVAL 365 DAY WHERE `reserved_until` IS NULL');
        DB::statement('ALTER TABLE `username_blacklist` MODIFY `reserved_until` TIMESTAMP NOT NULL');
    }
};
