<?php

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

/**
 * `license_tokens.usage_limit` → `rate_limit_per_minute`.
 *
 * El campo se llamaba "límite de uso" y la interfaz lo presentaba como tal, pero el
 * middleware lo aplica con una ventana de 60 segundos: no es una cuota, es un límite
 * **por minuto**, que se renueva para siempre.
 *
 * La diferencia no es de matiz. En esta misma base había una licencia llamada
 * "Licencia de Prueba Temporal" con `usage_limit = 100`: quien la creó entendía "100
 * llamadas y se acaba", y lo que tenía era **100 peticiones por minuto** —144.000 al
 * día—, o sea una licencia de prueba ilimitada. Y al revés, un 10 puesto como
 * cortesía estrangula a un cliente a 10 peticiones por minuto.
 *
 * **Decisión tomada** (2026-09-01): el comportamiento se queda como está —un límite
 * por minuto es lo que se quiere— y lo que cambia es el nombre, para que deje de
 * engañar. Una cuota total de verdad (`quota_total`, con consumo persistido) sería
 * una funcionalidad nueva y es decisión de Comercial, no de este arreglo.
 *
 * Ver known-issues MGR-013.
 *
 * **Seguro de renombrar**: `usage_limit` no viaja en la API. Comprobado que solo
 * aparecía en el middleware, dos componentes Livewire, el modelo, esta tabla y el
 * seeder.
 */
return new class extends Migration
{
    public function up(): void
    {
        Schema::table('license_tokens', function (Blueprint $table) {
            $table->renameColumn('usage_limit', 'rate_limit_per_minute');
        });
    }

    public function down(): void
    {
        Schema::table('license_tokens', function (Blueprint $table) {
            $table->renameColumn('rate_limit_per_minute', 'usage_limit');
        });
    }
};
