<?php

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

return new class extends Migration
{
    /**
     * Run the migrations.
     *
     * 연결(관계) 잠금 기능 추가:
     * - is_locked=true인 연결은 해제 불가
     * - 잠금된 연결의 자식 엔티티도 삭제 불가 (연결을 통한 보호)
     */
    public function up(): void
    {
        Schema::table('entity_relationships', function (Blueprint $table) {
            $table->boolean('is_locked')->default(false)->after('metadata')->comment('잠금 여부 (잠금 시 연결 해제 및 자식 삭제 불가)');
            $table->unsignedBigInteger('locked_by')->nullable()->after('is_locked')->comment('잠금 설정자 ID');
            $table->timestamp('locked_at')->nullable()->after('locked_by')->comment('잠금 설정 일시');

            $table->index('is_locked', 'idx_entity_rel_is_locked');
        });
    }

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