migrations/Version20260819104525.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations;
  4. use Doctrine\DBAL\Schema\Schema;
  5. use Doctrine\Migrations\AbstractMigration;
  6. /**
  7.  * Classements multiples (PROJ-2026-005 #17) — backfill :
  8.  * copie chaque affectation legacy (user.segmentation_id) dans la table pivot user_segmentation,
  9.  * afin que le pivot soit la source de vérité complète dès sa création.
  10.  * Idempotente (NOT EXISTS) et réversible (le down ne supprime que les lignes miroir).
  11.  */
  12. final class Version20260819104525 extends AbstractMigration
  13. {
  14.     public function getDescription(): string
  15.     {
  16.         return 'Classements multiples : backfill des segmentations legacy dans user_segmentation';
  17.     }
  18.     public function up(Schema $schema): void
  19.     {
  20.         $this->addSql('INSERT INTO user_segmentation (user_id, segmentation_id, created_at, updated_at)
  21.             SELECT u.id, u.segmentation_id, NOW(), NOW()
  22.             FROM `user` u
  23.             WHERE u.segmentation_id IS NOT NULL
  24.             AND NOT EXISTS (
  25.                 SELECT 1 FROM user_segmentation us
  26.                 WHERE us.user_id = u.id AND us.segmentation_id = u.segmentation_id
  27.             )');
  28.     }
  29.     public function down(Schema $schema): void
  30.     {
  31.         $this->addSql('DELETE us FROM user_segmentation us
  32.             INNER JOIN `user` u ON u.id = us.user_id AND u.segmentation_id = us.segmentation_id');
  33.     }
  34. }