<?php

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::table('expenses', function (Blueprint $table) {
            // Clave de idempotencia para el endpoint de sync batch (/api/pwa/sync/expenses).
            // Nullable: los gastos creados vía el endpoint individual (/api/pwa/expenses)
            // no generan idempotency_key porque son síncronos y no necesitan deduplicación.
            // El unique constraint sobre (company_id, idempotency_key) es seguro con NULLs:
            // MySQL no considera dos NULLs como iguales en índices únicos.
            $table->string('idempotency_key')->nullable()->after('approval_notes');
            $table->unique(['company_id', 'idempotency_key'], 'expenses_company_idempotency_unique');
        });
    }

    public function down(): void
    {
        Schema::table('expenses', function (Blueprint $table) {
            $table->dropUnique('expenses_company_idempotency_unique');
            $table->dropColumn('idempotency_key');
        });
    }
};
