<?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 Version20190629192326 extends AbstractMigration
{
public function getDescription() : string
{
return '';
}
public function up(Schema $schema) : void
{
// this up() migration is auto-generated, please modify it to your needs
$this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.');
$this->addSql('ALTER TABLE orderComments RENAME TO order_comment');
$this->addSql('ALTER TABLE order_comment CHANGE updatedby updated_by_id INT DEFAULT NULL, CHANGE updatedat updated_at DATETIME NOT NULL');
// disable invalid date check, since we already have invalid data
$this->addSql('SET @old_sql_mode := @@sql_mode ;');
$this->addSql('SET @new_sql_mode := @old_sql_mode ;');
$this->addSql("SET @new_sql_mode := TRIM(BOTH ',' FROM REPLACE(CONCAT(',',@new_sql_mode,','),',NO_ZERO_DATE,' ,','));");
$this->addSql("SET @new_sql_mode := TRIM(BOTH ',' FROM REPLACE(CONCAT(',',@new_sql_mode,','),',NO_ZERO_IN_DATE,',','));");
$this->addSql("SET @@sql_mode := @new_sql_mode ;");
// fix invalid dates first
$this->addSql('UPDATE order_comment SET updated_at=\'2018-01-01 00:00:00\' WHERE updated_at=\'0000-00-00 00:00:00\'');
// restore sql mode
$this->addSql("SET @@sql_mode := @old_sql_mode ;");
// add created by and at fields
$this->addSql('ALTER TABLE order_comment ADD created_by_id INT DEFAULT NULL, ADD created_at DATETIME');
$this->addSql('UPDATE order_comment SET created_by_id=updated_by_id, created_at=updated_at');
// add fk and indexes
$this->addSql('ALTER TABLE order_comment CHANGE created_at created_at DATETIME NOT NULL');
$this->addSql('ALTER TABLE order_comment ADD CONSTRAINT FK_620EFB27B03A8386 FOREIGN KEY (created_by_id) REFERENCES users (id)');
$this->addSql('ALTER TABLE order_comment ADD CONSTRAINT FK_620EFB27896DBBDE FOREIGN KEY (updated_by_id) REFERENCES users (id)');
$this->addSql('CREATE INDEX IDX_620EFB27B03A8386 ON order_comment (created_by_id)');
$this->addSql('CREATE INDEX IDX_620EFB27896DBBDE ON order_comment (updated_by_id)');
$this->addSql('ALTER TABLE order_comment RENAME INDEX idx_24dabc4ae2edd085 TO IDX_620EFB27E2EDD085');
}
public function down(Schema $schema) : void
{
// this down() migration is auto-generated, please modify it to your needs
$this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.');
$this->addSql('ALTER TABLE order_comment DROP FOREIGN KEY FK_620EFB27B03A8386');
$this->addSql('ALTER TABLE order_comment DROP FOREIGN KEY FK_620EFB27896DBBDE');
$this->addSql('DROP INDEX IDX_620EFB27B03A8386 ON order_comment');
$this->addSql('DROP INDEX IDX_620EFB27896DBBDE ON order_comment');
$this->addSql('ALTER TABLE order_comment CHANGE created_at created_at DATETIME DEFAULT NULL');
$this->addSql('ALTER TABLE order_comment RENAME INDEX idx_620efb27e2edd085 TO IDX_24DABC4AE2EDD085');
$this->addSql('ALTER TABLE order_comment RENAME TO orderComments');
$this->addSql('ALTER TABLE orderComments CHANGE updated_by_id updatedby INT DEFAULT NULL, CHANGE updated_at updatedat DATETIME NOT NULL');
$this->addSql('ALTER TABLE orderComments DROP created_by_id, DROP created_at');
}
}