<?php

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

return new class extends Migration
{
    /**
     * Run the migrations.
     */
    public function up(): void
    {
        Schema::table('inventories', function (Blueprint $table) {
            // 先新增新的唯一約束 (倉庫 + 商品 + 批號)
            // 這樣可以確保 warehouse_id 始終有索引可用，避免外鍵約束錯誤
            $table->unique(['warehouse_id', 'product_id', 'batch_number'], 'warehouse_product_batch_unique');
            
            // 然後移除舊的唯一約束 (倉庫 + 商品)
            $table->dropUnique('warehouse_product_unique');
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::table('inventories', function (Blueprint $table) {
            // 恢復時也要注意順序，先加回舊的（如果資料允許），再刪除新的
            // 但如果資料已經有多批號，加回舊的會失敗。這裡只盡力而為。
            $table->unique(['warehouse_id', 'product_id'], 'warehouse_product_unique');
            $table->dropUnique('warehouse_product_batch_unique');
        });
    }
};
