<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* form_lead_data.collection_index: posición del elemento dentro de su apartado repetible.
*
* Los elementos de una colección (p.ej. varios hijos) se guardan como filas con el mismo
* field y type; lo único que los distinguía era el ordinal que el alta añade a la etiqueta.
* Al agrupar por field_type para quedarse con el valor vigente (id mayor), todos menos el
* último se trataban como versiones anteriores y desaparecían del admin, la exportación y
* los emails.
*
* NULL = campo no repetible, que es lo que tienen todas las filas existentes. Las filas de
* colección ya guardadas se rellenan con app:backfill-collection-index.
*
* Sin índice: ninguna consulta filtra por esta columna, las lecturas recorren en memoria
* los datos de cada registro.
*/
final class Version20261015090000 extends AbstractMigration
{
public function getDescription(): string
{
return 'form_lead_data.collection_index: posición del elemento en los apartados repetibles';
}
public function up(Schema $schema): void
{
$this->addSql('ALTER TABLE form_lead_data ADD collection_index SMALLINT DEFAULT NULL');
}
public function down(Schema $schema): void
{
$this->addSql('ALTER TABLE form_lead_data DROP collection_index');
}
}