<?php

use App\Models\ConfigGroup;
use App\Models\ConfigItem;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB;

/**
 * 新增"非WWW跳转"配置项到基础配置分组
 *
 * - 在"站点关闭"(sort=3)之后插入"非WWW跳转"(sort=4)
 * - 后续配置项 sort 全部 +1，保持显示顺序符合预期
 */
return new class extends Migration
{
    public function up(): void
    {
        $basicGroupId = ConfigGroup::where('code', 'basic')->value('id');
        if (!$basicGroupId) {
            return;
        }

        // 先把 basic 分组中 sort >= 4 的项 sort + 1，腾出 sort=4 的位置
        // 必须在插入新项之前执行，避免新项也被 +1
        DB::table('config_items')
            ->where('group_id', $basicGroupId)
            ->where('sort', '>=', 4)
            ->increment('sort');

        ConfigItem::updateOrCreate(
            ['code' => 'force_www_redirect'],
            [
                'group_id' => $basicGroupId,
                'name' => '非WWW跳转',
                'value' => '0',
                'type' => 'switch',
                'options' => null,
                'tips' => '开启后，未绑定应用的子域名与根域名将自动301跳转到www域名下，已绑定应用的子域名不受影响。',
                'sort' => 4,
                'status' => 1,
            ]
        );
    }

    public function down(): void
    {
        $basicGroupId = ConfigGroup::where('code', 'basic')->value('id');
        if (!$basicGroupId) {
            return;
        }

        // 先删除新项
        ConfigItem::where('code', 'force_www_redirect')->delete();

        // 再把 basic 分组中 sort > 4 的项 sort - 1，恢复原顺序
        DB::table('config_items')
            ->where('group_id', $basicGroupId)
            ->where('sort', '>', 4)
            ->decrement('sort');
    }
};
