migrations/Version20240828223302.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.  * Auto-generated Migration: Please modify to your needs!
  8.  */
  9. final class Version20240828223302 extends AbstractMigration
  10. {
  11.     public function getDescription(): string
  12.     {
  13.         return 'Migration à exécuter sur un dump de la DB du 29-08-2024';
  14.     }
  15.     public function up(Schema $schema): void
  16.     {
  17.         // this up() migration is auto-generated, please modify it to your needs
  18.         $this->addSql('
  19.             DELETE FROM abstract_option_reservation 
  20.             WHERE extra_reservation_id IN (
  21.                 SELECT id 
  22.                 FROM extra_reservation 
  23.                 WHERE reservation_id IS NOT NULL 
  24.                 AND reservation_id NOT IN (SELECT id FROM reservation)
  25.             );
  26.         ');
  27.         $this->addSql('
  28.             DELETE FROM extra_reservation 
  29.             WHERE reservation_id IS NOT NULL 
  30.             AND reservation_id NOT IN (SELECT id FROM reservation);
  31.         ');
  32.         $this->addSql('CREATE TABLE cancel_reservation_history (id INT NOT NULL, code_id INT DEFAULT NULL, reason LONGTEXT DEFAULT NULL, INDEX IDX_1D30DD5427DAFE17 (code_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  33.         $this->addSql('CREATE TABLE change_reservation (id INT AUTO_INCREMENT NOT NULL, update_reservation_history_id INT NOT NULL, field VARCHAR(255) NOT NULL, old_value VARCHAR(255) DEFAULT NULL, new_value VARCHAR(255) DEFAULT NULL, INDEX IDX_5AABF20FB69CFC70 (update_reservation_history_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  34.         $this->addSql('CREATE TABLE contact (id INT AUTO_INCREMENT NOT NULL, email VARCHAR(100) NOT NULL, nom VARCHAR(255) DEFAULT NULL, prenom VARCHAR(255) DEFAULT NULL, adresse VARCHAR(255) DEFAULT NULL, ville VARCHAR(255) DEFAULT NULL, code_postal VARCHAR(255) DEFAULT NULL, pays VARCHAR(255) DEFAULT NULL, telephone VARCHAR(255) DEFAULT NULL, newsletter TINYINT(1) DEFAULT NULL, UNIQUE INDEX UNIQ_4C62E638E7927C74 (email), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  35.         $this->addSql('CREATE TABLE create_reservation_history (id INT NOT NULL, code_id INT DEFAULT NULL, INDEX IDX_13B8AE7F27DAFE17 (code_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  36.         $this->addSql('CREATE TABLE payment_history (id INT AUTO_INCREMENT NOT NULL, payment_id INT NOT NULL, created_at DATETIME NOT NULL, modifier VARCHAR(255) DEFAULT NULL, INDEX IDX_3EF37EA14C3A3BB (payment_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  37.         $this->addSql('CREATE TABLE reservation_history (id INT AUTO_INCREMENT NOT NULL, reservation_id INT DEFAULT NULL, created_at DATETIME NOT NULL, modifier VARCHAR(255) DEFAULT NULL, discr VARCHAR(255) NOT NULL, INDEX IDX_402FCBCEB83297E7 (reservation_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  38.         $this->addSql('CREATE TABLE send_confirmation_reservation_history (id INT NOT NULL, log_email_id INT NOT NULL, INDEX IDX_8A85701CC6610A16 (log_email_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  39.         $this->addSql('CREATE TABLE update_reservation_history (id INT NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  40.         
  41.         $this->addSql('ALTER TABLE reservation CHANGE newsletter newsletter TINYINT(1) DEFAULT NULL');
  42.         $this->addSql('ALTER TABLE token ADD reservation_id INT DEFAULT NULL, ADD code_promo_id INT DEFAULT NULL');
  43.         $this->addSql('ALTER TABLE token ADD CONSTRAINT FK_5F37A13BB83297E7 FOREIGN KEY (reservation_id) REFERENCES reservation (id)');
  44.         $this->addSql('ALTER TABLE token ADD CONSTRAINT FK_5F37A13B294102D4 FOREIGN KEY (code_promo_id) REFERENCES code (id)');
  45.         $this->addSql('
  46.             UPDATE extra_reservation er
  47.             JOIN token t ON er.token_id = t.id
  48.             SET er.reservation_id = t.reservation_id
  49.             WHERE er.token_id IS NOT NULL;
  50.         ');
  51.         $this->addSql('ALTER TABLE code MODIFY value VARCHAR(64)');
  52.         $this->addSql('ALTER TABLE token MODIFY codepromo VARCHAR(64)');
  53.         $this->addSql('CREATE INDEX idx_value ON code(value)');
  54.         $this->addSql('CREATE INDEX idx_codepromo ON token(codepromo)');
  55.         $this->addSql('UPDATE token t
  56.                 JOIN code c ON t.codepromo = c.value
  57.                 SET t.code_promo_id = c.id;
  58.         ');
  59.         $this->addSql('ALTER TABLE token DROP codepromo');
  60.         $this->addSql('ALTER TABLE reservation ADD contact_id INT DEFAULT NULL');
  61.         $this->addSql('ALTER TABLE reservation ADD CONSTRAINT FK_42C84955E7A1254A FOREIGN KEY (contact_id) REFERENCES contact (id)');
  62.         $this->addSql('CREATE INDEX IDX_42C84955E7A1254A ON reservation (contact_id)');
  63.         $this->addSql('ALTER TABLE token ADD contact_id INT DEFAULT NULL');
  64.         $this->addSql('ALTER TABLE token ADD CONSTRAINT FK_5F37A13BE7A1254A FOREIGN KEY (contact_id) REFERENCES contact (id)');
  65.         $this->addSql('CREATE INDEX IDX_5F37A13BE7A1254A ON token (contact_id)');
  66.         $this->addSql("
  67.             INSERT INTO contact (email, nom, prenom, adresse, ville, code_postal)
  68.             SELECT email, nom, prenom, adresse, ville, code_postal
  69.             FROM token
  70.             WHERE email IS NOT NULL
  71.             ON DUPLICATE KEY UPDATE
  72.                 nom = VALUES(nom),
  73.                 prenom = VALUES(prenom),
  74.                 adresse = VALUES(adresse),
  75.                 ville = VALUES(ville),
  76.                 code_postal = VALUES(code_postal)
  77.         ");
  78.         $this->addSql("
  79.             UPDATE token t
  80.             JOIN contact c ON t.email = c.email
  81.             SET t.contact_id = c.id
  82.         ");
  83.         $this->addSql("
  84.             INSERT INTO contact (email, nom, prenom, adresse, ville, pays, telephone, newsletter)
  85.             SELECT email, nom, prenom, adresse, ville, pays, SUBSTRING(tel, 1, 20), newsletter
  86.             FROM reservation
  87.             WHERE email IS NOT NULL
  88.             ON DUPLICATE KEY UPDATE
  89.                 nom = VALUES(nom),
  90.                 prenom = VALUES(prenom),
  91.                 adresse = VALUES(adresse),
  92.                 ville = VALUES(ville),
  93.                 pays = VALUES(pays),
  94.                 telephone = VALUES(telephone),
  95.                 newsletter = VALUES(newsletter)
  96.         ");
  97.         $this->addSql("
  98.             UPDATE reservation r
  99.             JOIN contact c ON r.email = c.email
  100.             SET r.contact_id = c.id
  101.         ");
  102.         $this->addSql('ALTER TABLE cancel_reservation_history ADD CONSTRAINT FK_1D30DD5427DAFE17 FOREIGN KEY (code_id) REFERENCES code (id)');
  103.         $this->addSql('ALTER TABLE cancel_reservation_history ADD CONSTRAINT FK_1D30DD54BF396750 FOREIGN KEY (id) REFERENCES reservation_history (id) ON DELETE CASCADE');
  104.         $this->addSql('ALTER TABLE change_reservation ADD CONSTRAINT FK_5AABF20FB69CFC70 FOREIGN KEY (update_reservation_history_id) REFERENCES update_reservation_history (id)');
  105.         $this->addSql('ALTER TABLE create_reservation_history ADD CONSTRAINT FK_13B8AE7F27DAFE17 FOREIGN KEY (code_id) REFERENCES code (id)');
  106.         $this->addSql('ALTER TABLE create_reservation_history ADD CONSTRAINT FK_13B8AE7FBF396750 FOREIGN KEY (id) REFERENCES reservation_history (id) ON DELETE CASCADE');
  107.         $this->addSql('ALTER TABLE payment_history ADD CONSTRAINT FK_3EF37EA14C3A3BB FOREIGN KEY (payment_id) REFERENCES abstract_payment (id)');
  108.         $this->addSql('ALTER TABLE reservation_history ADD CONSTRAINT FK_402FCBCEB83297E7 FOREIGN KEY (reservation_id) REFERENCES reservation (id)');
  109.         $this->addSql('ALTER TABLE send_confirmation_reservation_history ADD CONSTRAINT FK_8A85701CC6610A16 FOREIGN KEY (log_email_id) REFERENCES log_email (id)');
  110.         $this->addSql('ALTER TABLE send_confirmation_reservation_history ADD CONSTRAINT FK_8A85701CBF396750 FOREIGN KEY (id) REFERENCES reservation_history (id) ON DELETE CASCADE');
  111.         $this->addSql('ALTER TABLE update_reservation_history ADD CONSTRAINT FK_97776BCCBF396750 FOREIGN KEY (id) REFERENCES reservation_history (id) ON DELETE CASCADE');
  112.         $this->addSql('ALTER TABLE abstract_payment ADD reservation_id INT DEFAULT NULL, ADD numero_de_transaction VARCHAR(50) DEFAULT NULL, ADD cheque_number VARCHAR(7) DEFAULT NULL');
  113.         $this->addSql('ALTER TABLE abstract_payment ADD CONSTRAINT FK_CF9FE29DB83297E7 FOREIGN KEY (reservation_id) REFERENCES reservation (id)');
  114.         $this->addSql('CREATE INDEX IDX_CF9FE29DB83297E7 ON abstract_payment (reservation_id)');
  115.         $this->addSql('ALTER TABLE extra_reservation DROP FOREIGN KEY FK_D1359051B83297E7');
  116.         $this->addSql('ALTER TABLE extra_reservation ADD privatisation_id INT DEFAULT NULL');
  117.         $this->addSql('ALTER TABLE extra_reservation ADD CONSTRAINT FK_D1359051CE4BE7FC FOREIGN KEY (privatisation_id) REFERENCES privatisation (id)');
  118.         $this->addSql('ALTER TABLE extra_reservation ADD CONSTRAINT IDX_D1359051B83297E7 FOREIGN KEY (reservation_id) REFERENCES reservation (id)');
  119.         $this->addSql('CREATE INDEX IDX_D1359051CE4BE7FC ON extra_reservation (privatisation_id)');
  120.         $this->addSql('ALTER TABLE log_email ADD file_path VARCHAR(255) DEFAULT NULL');
  121.         $this->addSql('ALTER TABLE participant ADD token_id INT DEFAULT NULL');
  122.         $this->addSql('ALTER TABLE participant ADD reservation_id INT DEFAULT NULL');
  123.         $this->addSql('UPDATE participant SET reservation_id = reservation');
  124.         $this->addSql('ALTER TABLE participant DROP COLUMN reservation');
  125.         $this->addSql('
  126.             UPDATE participant 
  127.             SET reservation_id = NULL 
  128.             WHERE reservation_id NOT IN (SELECT id FROM reservation);
  129.         ');
  130.         $this->addSql('ALTER TABLE participant ADD CONSTRAINT FK_D79F6B11B83297E7 FOREIGN KEY (reservation_id) REFERENCES reservation (id)');
  131.         $this->addSql('ALTER TABLE participant ADD CONSTRAINT FK_D79F6B1141DEE7B9 FOREIGN KEY (token_id) REFERENCES token (id)');
  132.         $this->addSql('CREATE INDEX IDX_D79F6B11B83297E7 ON participant (reservation_id)');
  133.         $this->addSql('CREATE INDEX IDX_D79F6B1141DEE7B9 ON participant (token_id)');
  134.         $this->addSql('ALTER TABLE reservation ADD offer VARCHAR(255) DEFAULT NULL');
  135.         $this->addSql('UPDATE reservation SET offer = offre');
  136.         $this->addSql('ALTER TABLE reservation ADD reste_apayer DOUBLE PRECISION DEFAULT NULL, DROP offre, DROP nom, DROP prenom, DROP adresse, DROP ville, DROP pays, DROP email, DROP tel, DROP remarque, DROP newsletter, CHANGE date date DATETIME DEFAULT NULL');
  137.         
  138.         $this->addSql('ALTER TABLE token ADD date DATETIME DEFAULT NULL, DROP nom, DROP prenom, DROP adresse, DROP ville, DROP email, DROP code_postal');
  139.         $this->addSql('CREATE INDEX IDX_5F37A13BB83297E7 ON token (reservation_id)');
  140.         $this->addSql('CREATE INDEX IDX_5F37A13B294102D4 ON token (code_promo_id)');
  141.         $this->addSql('ALTER TABLE token MODIFY value VARCHAR(64)');
  142.         $this->addSql('CREATE INDEX idx_token_value ON token(value)');
  143.         $this->addSql('ALTER TABLE reservation MODIFY token VARCHAR(64)');
  144.         $this->addSql('CREATE INDEX idx_reservation_token ON reservation(token)');
  145.         $this->addSql('
  146.             UPDATE token t
  147.             JOIN reservation r ON t.value = r.token
  148.             SET t.reservation_id = r.id
  149.         ');
  150.         $this->addSql('
  151.             UPDATE extra_reservation er
  152.             JOIN (
  153.                 SELECT t.reservation_id, MAX(t.id) AS recent_token_id
  154.                 FROM token t
  155.                 GROUP BY t.reservation_id
  156.             ) recent_tokens ON er.token_id = recent_tokens.recent_token_id
  157.             SET er.reservation_id = recent_tokens.reservation_id
  158.         ');
  159.     }
  160.     public function down(Schema $schema): void
  161.     {
  162.         // this down() migration is auto-generated, please modify it to your needs
  163.         $this->addSql('ALTER TABLE reservation DROP FOREIGN KEY FK_42C84955E7A1254A');
  164.         $this->addSql('ALTER TABLE token DROP FOREIGN KEY FK_5F37A13BE7A1254A');
  165.         $this->addSql('ALTER TABLE cancel_reservation_history DROP FOREIGN KEY FK_1D30DD5427DAFE17');
  166.         $this->addSql('ALTER TABLE cancel_reservation_history DROP FOREIGN KEY FK_1D30DD54BF396750');
  167.         $this->addSql('ALTER TABLE change_reservation DROP FOREIGN KEY FK_5AABF20FB69CFC70');
  168.         $this->addSql('ALTER TABLE create_reservation_history DROP FOREIGN KEY FK_13B8AE7F27DAFE17');
  169.         $this->addSql('ALTER TABLE create_reservation_history DROP FOREIGN KEY FK_13B8AE7FBF396750');
  170.         $this->addSql('ALTER TABLE payment_history DROP FOREIGN KEY FK_3EF37EA14C3A3BB');
  171.         $this->addSql('ALTER TABLE reservation_history DROP FOREIGN KEY FK_402FCBCEB83297E7');
  172.         $this->addSql('ALTER TABLE send_confirmation_reservation_history DROP FOREIGN KEY FK_8A85701CC6610A16');
  173.         $this->addSql('ALTER TABLE send_confirmation_reservation_history DROP FOREIGN KEY FK_8A85701CBF396750');
  174.         $this->addSql('ALTER TABLE update_reservation_history DROP FOREIGN KEY FK_97776BCCBF396750');
  175.         $this->addSql('DROP TABLE cancel_reservation_history');
  176.         $this->addSql('DROP TABLE change_reservation');
  177.         $this->addSql('DROP TABLE contact');
  178.         $this->addSql('DROP TABLE create_reservation_history');
  179.         $this->addSql('DROP TABLE payment_history');
  180.         $this->addSql('DROP TABLE reservation_history');
  181.         $this->addSql('DROP TABLE send_confirmation_reservation_history');
  182.         $this->addSql('DROP TABLE update_reservation_history');
  183.         $this->addSql('ALTER TABLE abstract_payment DROP FOREIGN KEY FK_CF9FE29DB83297E7');
  184.         $this->addSql('DROP INDEX IDX_CF9FE29DB83297E7 ON abstract_payment');
  185.         $this->addSql('ALTER TABLE abstract_payment DROP reservation_id, DROP numero_de_transaction, DROP cheque_number');
  186.         $this->addSql('ALTER TABLE extra_reservation DROP FOREIGN KEY FK_D1359051CE4BE7FC');
  187.         $this->addSql('ALTER TABLE extra_reservation DROP FOREIGN KEY IDX_D1359051B83297E7');
  188.         $this->addSql('DROP INDEX IDX_D1359051CE4BE7FC ON extra_reservation');
  189.         $this->addSql('ALTER TABLE extra_reservation DROP privatisation_id');
  190.         $this->addSql('ALTER TABLE extra_reservation ADD CONSTRAINT FK_D1359051B83297E7 FOREIGN KEY (reservation_id) REFERENCES privatisation (id)');
  191.         $this->addSql('ALTER TABLE log_email DROP file_path');
  192.         $this->addSql('ALTER TABLE participant DROP FOREIGN KEY FK_D79F6B11B83297E7');
  193.         $this->addSql('ALTER TABLE participant DROP FOREIGN KEY FK_D79F6B1141DEE7B9');
  194.         $this->addSql('DROP INDEX IDX_D79F6B11B83297E7 ON participant');
  195.         $this->addSql('DROP INDEX IDX_D79F6B1141DEE7B9 ON participant');
  196.         $this->addSql('ALTER TABLE participant ADD reservation INT NOT NULL, DROP reservation_id, DROP token_id');
  197.         $this->addSql('DROP INDEX IDX_42C84955E7A1254A ON reservation');
  198.         $this->addSql('ALTER TABLE reservation ADD offre VARCHAR(255) NOT NULL, ADD prenom VARCHAR(255) DEFAULT NULL, ADD adresse VARCHAR(255) DEFAULT NULL, ADD ville VARCHAR(255) DEFAULT NULL, ADD pays VARCHAR(255) DEFAULT NULL, ADD email VARCHAR(255) DEFAULT NULL, ADD tel VARCHAR(255) DEFAULT NULL, ADD remarque VARCHAR(255) DEFAULT NULL, ADD newsletter TINYINT(1) NOT NULL, DROP contact_id, DROP reste_apayer, CHANGE date date DATETIME NOT NULL, CHANGE offer nom VARCHAR(255) DEFAULT NULL');
  199.         $this->addSql('ALTER TABLE token DROP FOREIGN KEY FK_5F37A13BB83297E7');
  200.         $this->addSql('ALTER TABLE token DROP FOREIGN KEY FK_5F37A13B294102D4');
  201.         $this->addSql('DROP INDEX IDX_5F37A13BB83297E7 ON token');
  202.         $this->addSql('DROP INDEX IDX_5F37A13B294102D4 ON token');
  203.         $this->addSql('DROP INDEX IDX_5F37A13BE7A1254A ON token');
  204.         $this->addSql('ALTER TABLE token ADD codepromo VARCHAR(255) DEFAULT NULL, ADD nom VARCHAR(255) DEFAULT NULL, ADD prenom VARCHAR(255) DEFAULT NULL, ADD adresse VARCHAR(255) DEFAULT NULL, ADD ville VARCHAR(255) DEFAULT NULL, ADD email VARCHAR(255) DEFAULT NULL, ADD code_postal VARCHAR(255) DEFAULT NULL, DROP reservation_id, DROP code_promo_id, DROP contact_id, DROP date');
  205.     }
  206. }