migrations/Version20260729200000.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.  * Journal horodaté des clics « Voir les détails », par utilisateur et par produit.
  8.  * Le compteur select_recommendation.detail_clicks reste alimenté pour les agrégats.
  9.  */
  10. final class Version20260729200000 extends AbstractMigration
  11. {
  12.     public function getDescription(): string
  13.     {
  14.         return 'Journal des clics « Voir les détails » sur SELECT';
  15.     }
  16.     public function up(Schema $schema): void
  17.     {
  18.         $this->addSql('
  19.             CREATE TABLE select_detail_click (
  20.                 id INT AUTO_INCREMENT NOT NULL,
  21.                 recommendation_id INT DEFAULT NULL,
  22.                 email VARCHAR(255) NOT NULL,
  23.                 product_slug VARCHAR(255) NOT NULL,
  24.                 product_name VARCHAR(255) DEFAULT NULL,
  25.                 kind VARCHAR(20) NOT NULL,
  26.                 path_label VARCHAR(500) NOT NULL,
  27.                 clicked_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\',
  28.                 INDEX idx_select_click_date (clicked_at),
  29.                 INDEX idx_select_click_email (email),
  30.                 INDEX idx_select_click_slug (product_slug),
  31.                 INDEX IDX_SELECT_CLICK_RECO (recommendation_id),
  32.                 PRIMARY KEY(id)
  33.             ) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB
  34.         ');
  35.         $this->addSql('ALTER TABLE select_detail_click ADD CONSTRAINT FK_SELECT_CLICK_RECO FOREIGN KEY (recommendation_id) REFERENCES select_recommendation (id) ON DELETE SET NULL');
  36.     }
  37.     public function down(Schema $schema): void
  38.     {
  39.         $this->addSql('ALTER TABLE select_detail_click DROP FOREIGN KEY FK_SELECT_CLICK_RECO');
  40.         $this->addSql('DROP TABLE select_detail_click');
  41.     }
  42. }