<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* form_lead_data.label y group_label pasan de VARCHAR(255) a LONGTEXT.
*
* Los enunciados del cuestionario de la Carta de la Diversidad llegan a pasar de 300
* caracteres (la pregunta 20 tiene 333 y la 36, 290, en la redacción del documento de
* especificación). Con sql_mode estricto, un INSERT más largo que la columna no recorta el
* texto: lanza SQLSTATE[22001] 1406 Data too long y aborta el envío del formulario entero.
*
* Se elige LONGTEXT y no un VARCHAR más ancho porque ninguna de las dos columnas está
* indexada, `value` en esta misma tabla ya es LONGTEXT, y un varchar más ancho solo movería
* el techo arbitrario en lugar de quitarlo.
*/
final class Version20260917145645 extends AbstractMigration
{
public function getDescription(): string
{
return 'form_lead_data.label y group_label a LONGTEXT: los enunciados del cuestionario no caben en 255';
}
public function up(Schema $schema): void
{
$this->addSql('ALTER TABLE form_lead_data CHANGE label label LONGTEXT NOT NULL, CHANGE group_label group_label LONGTEXT NOT NULL');
}
/**
* Ojo: revertir es destructivo si ya hay etiquetas de más de 255 caracteres. Con sql_mode
* estricto el ALTER fallará en lugar de truncarlas, que es el comportamiento deseable.
*/
public function down(Schema $schema): void
{
$this->addSql('ALTER TABLE form_lead_data CHANGE label label VARCHAR(255) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_ci`, CHANGE group_label group_label VARCHAR(255) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_ci`');
}
}