<?php

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

/**
 * Cómo le fue al Moodle la última vez que comprobó si hay actualizaciones del core.
 *
 * **Por qué hace falta.** Hasta ahora un `sync` sin releases disponibles se leía como «está
 * al día», y no siempre lo era: también llega vacío cuando la comprobación ha fallado —sin
 * salida a internet, `moodle.org` caído— o cuando el administrador la tiene desactivada. En
 * los dos casos el Manager borraba las releases y dejaba `lastversion`/`lastminor` como si
 * nada, y el parque enseñaba al día un sitio del que no se sabía nada.
 *
 * El plugin lo manda ahora en `site.availableupdatesstatus` (PRODSECU-195): `ok`, `failed` o
 * `disabled`. **Nullable**: los clientes antiguos no lo mandan, y para ellos no se sabe.
 *
 * Va en `data` y no en `environments` porque es lo mismo que `availableupdatesfetch`, que ya
 * está aquí: la fecha y el resultado de la misma comprobación.
 */
return new class extends Migration
{
    public function up(): void
    {
        Schema::table('data', function (Blueprint $table) {
            $table->string('availableupdatesstatus', 20)->nullable()->after('availableupdatesfetch');
        });
    }

    public function down(): void
    {
        Schema::table('data', function (Blueprint $table) {
            $table->dropColumn('availableupdatesstatus');
        });
    }
};
