migrations/Version20250707075137.php line 1

Open in your IDE?
  1. <?php
    
    declare(strict_types=1);
    
    namespace DoctrineMigrations;
    
    use Doctrine\DBAL\Schema\Schema;
    use Doctrine\Migrations\AbstractMigration;
    
    /**
     * Auto-generated Migration: Please modify to your needs!
     */
    final class Version20250707075137 extends AbstractMigration
    {
        public function getDescription(): string
        {
            return 'Fusionne le niveau de confidentialité ID 2 vers ID 1.';
        }
    
        public function up(Schema $schema): void
        {
            // Cette opération est spécifique à MySQL, adaptez si vous utilisez une autre base de données
            $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.');
    
            // Mettre à jour les entités liées de l'ID 2 vers l'ID 1
    
            // Mettre à jour CommunityRelationship
            $this->addSql("UPDATE community_relationship SET confidentiality_id = 1 WHERE confidentiality_id = 2");
    
            // Mettre à jour Invitefriend
            $this->addSql("UPDATE invitefriend SET confidentiality_id = 1 WHERE confidentiality_id = 2");
    
            // Mettre à jour Gift (attention, votre entité a 'confidentality', pas 'confidentiality')
            $this->addSql("UPDATE gift SET confidentality_id = 1 WHERE confidentality_id = 2");
    
            // Mettre à jour UserInformations
            $this->addSql("UPDATE user_informations SET confidentialite_id = 1 WHERE confidentialite_id = 2");
    
            // Renommer le niveau de confidentialité ID 1 en "Cercle proche"
            $this->addSql("UPDATE confidentialite SET label = 'Cercle proche' WHERE id = 1");
    
            // Supprimer l'ancien niveau de confidentialité (ID 2)
            $this->addSql("DELETE FROM confidentialite WHERE id = 2");
        }
    
        public function down(Schema $schema): void
        {
            // ATTENTION : Le "down" d'une opération de fusion est extrêmement complexe et souvent impossible
            // de manière générique sans perdre des données ou sans une logique métier très spécifique
            // pour redéterminer quel ancien niveau (1 ou 2) s'appliquait à chaque enregistrement.
            // Il est FORTEMENT recommandé de faire une sauvegarde de votre base de données avant d'exécuter cette migration.
            $this->write('ATTENTION : Un rollback de cette fusion est complexe et non implémenté automatiquement.');
            $this->write('Si un rollback est nécessaire, il est fortement recommandé de restaurer une sauvegarde de la base de données.');
        }
    }