<?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 Version20260630153659 extends AbstractMigration
{
public function getDescription(): string
{
return 'Move language column from creator to user';
}
public function up(Schema $schema): void
{
if (!$this->creatorLanguageColumnExists()) {
return;
}
if (!$this->userLanguageColumnExists()) {
$this->addSql('ALTER TABLE user ADD language VARCHAR(8) DEFAULT NULL');
$this->addSql('CREATE INDEX idx_user_language ON user (language)');
}
$this->addSql(
'UPDATE user u INNER JOIN creator c ON c.id = u.id '
. 'SET u.language = c.language '
. "WHERE c.language IS NOT NULL AND c.language NOT IN ('un','und','') "
. "AND (u.language IS NULL OR u.language = '')"
);
$this->addSql('DROP INDEX idx_creator_language ON creator');
$this->addSql('ALTER TABLE creator DROP language');
}
public function down(Schema $schema): void
{
if (!$this->userLanguageColumnExists()) {
return;
}
if (!$this->creatorLanguageColumnExists()) {
$this->addSql('ALTER TABLE creator ADD language VARCHAR(8) DEFAULT NULL');
$this->addSql('CREATE INDEX idx_creator_language ON creator (language)');
}
$this->addSql(
'UPDATE creator c INNER JOIN user u ON u.id = c.id '
. 'SET c.language = u.language '
. "WHERE u.language IS NOT NULL AND u.language NOT IN ('un','und','') "
. "AND (c.language IS NULL OR c.language = '')"
);
$this->addSql('DROP INDEX idx_user_language ON user');
$this->addSql('ALTER TABLE user DROP language');
}
private function creatorLanguageColumnExists(): bool
{
return (bool) $this->connection->fetchOne(
"SELECT COUNT(*) FROM information_schema.COLUMNS "
. "WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'creator' AND COLUMN_NAME = 'language'"
);
}
private function userLanguageColumnExists(): bool
{
return (bool) $this->connection->fetchOne(
"SELECT COUNT(*) FROM information_schema.COLUMNS "
. "WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'user' AND COLUMN_NAME = 'language'"
);
}
}