<?php

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

return new class extends Migration
{
    /**
     * Run the migrations.
     * archived_records 테이블에 tenant_id 컬럼 추가
     *
     * NOTE: FK 제약조건 없음 (삭제된 테넌트를 참조할 수 있어야 함)
     * - 테넌트 삭제 시: tenant_id = 삭제된 테넌트의 ID
     * - 사용자 삭제 시: tenant_id = 현재 선택된 테넌트 ID (session)
     */
    public function up(): void
    {
        Schema::table('archived_records', function (Blueprint $table) {
            $table->unsignedBigInteger('tenant_id')->nullable()->after('record_type');
            $table->index('tenant_id');
        });

        // 기존 데이터 처리: tenant 타입의 경우 main_data에서 id 추출
        DB::statement("
            UPDATE archived_records
            SET tenant_id = JSON_UNQUOTE(JSON_EXTRACT(main_data, '$.id'))
            WHERE record_type = 'tenant' AND tenant_id IS NULL
        ");
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::table('archived_records', function (Blueprint $table) {
            $table->dropIndex(['tenant_id']);
            $table->dropColumn('tenant_id');
        });
    }
};
