<?php

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

/**
 * Lo que se fija a mano en la ficha de un plugin.
 *
 * **Para lo que el inventario no sabe o sabe mal.** La familia la deduce el Manager —producto,
 * nuestro, y estándar o terceros según diga cada Moodle—, pero hay casos que solo sabe una
 * persona: un plugin de terceros en sitios cuyo `local_tresipunt` aún no manda `isstandard`,
 * o la página buena del Marketplace, que va por un número (`/plugins/3993`) que el
 * inventario solo trae cuando hay una actualización pendiente.
 *
 * **Una fila por `component`, y solo si alguien ha fijado algo.** Que un plugin sea
 * «nuestro» no va aquí: eso es el catálogo de plugins propios (`own_plugins`), que ya existe
 * y lo usan otras pantallas.
 */
return new class extends Migration
{
    public function up(): void
    {
        Schema::create('plugin_fichas', function (Blueprint $table) {
            $table->id();
            $table->string('component', 191)->unique();
            // `terceros` o `estandar`. Nulo: lo que diga el Moodle de cada sitio.
            $table->string('clasificacion', 20)->nullable();
            $table->string('marketplace_url', 500)->nullable();
            $table->foreignId('updated_by')->nullable()->constrained('users')->nullOnDelete();
            $table->timestamps();
        });
    }

    public function down(): void
    {
        Schema::dropIfExists('plugin_fichas');
    }
};
