<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
final class Version20241112090000 extends AbstractMigration
{
public function getDescription(): string
{
return 'Ensure candidate_communication.updated_at column exists for MySQL deployments';
}
public function up(Schema $schema): void
{
// On ne fait ça que pour MySQL
if ('mysql' !== $this->connection->getDatabasePlatform()->getName()) {
return;
}
$schemaManager = $this->connection->createSchemaManager();
// Récupérer les colonnes de la table
$columns = $schemaManager->listTableColumns('candidate_communication');
// Si la colonne updated_at n'existe PAS, on l'ajoute
if (!isset($columns['updated_at'])) {
$this->addSql(
"ALTER TABLE candidate_communication " .
"ADD updated_at DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime_immutable)'"
);
}
// Sinon : on ne fait rien, la migration est considérée comme passée sans erreur
}
public function down(Schema $schema): void
{
if ('mysql' !== $this->connection->getDatabasePlatform()->getName()) {
return;
}
$schemaManager = $this->connection->createSchemaManager();
$columns = $schemaManager->listTableColumns('candidate_communication');
// On ne supprime la colonne que si elle existe réellement
if (isset($columns['updated_at'])) {
$this->addSql('ALTER TABLE candidate_communication DROP COLUMN updated_at');
}
}
}