<?php

/**
 * 文件功能：创建职务任命权限中间表迁移
 * 记录"职务 A 的持有者可以将用户任命到职务 B"的多对多关系
 * 某职务若无记录则视为无任命权
 *
 * @author   ChatRoom Laravel
 *
 * @version  1.0.0
 */

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

return new class extends Migration
{
    /**
     * 创建职务任命权限表
     */
    public function up(): void
    {
        Schema::create('position_appoint_limits', function (Blueprint $table) {
            // 任命人的职务（该职务的持有者有权任命）
            $table->foreignId('appointer_position_id')
                ->constrained('positions')
                ->cascadeOnDelete()
                ->comment('任命人职务 ID');

            // 可被任命到的目标职务
            $table->foreignId('appointable_position_id')
                ->constrained('positions')
                ->cascadeOnDelete()
                ->comment('可任命的目标职务 ID');

            $table->primary(['appointer_position_id', 'appointable_position_id']);
        });
    }

    /**
     * 回滚：删除职务任命权限表
     */
    public function down(): void
    {
        Schema::dropIfExists('position_appoint_limits');
    }
};
