<?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 Version20180813165528 extends AbstractMigration
{
public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
$this->addSql('RENAME TABLE stages TO config_stage');
$this->addSql('ALTER TABLE config_stage ENGINE = InnoDB');
$this->addSql('ALTER TABLE config_stage CHARACTER SET = utf8mb4');
$this->addSql('
ALTER TABLE config_stage
DROP administrators,
CHANGE name name VARCHAR(255) NOT NULL,
CHANGE message_subject message_subject VARCHAR(255) DEFAULT NULL,
CHANGE message_body message_body LONGTEXT DEFAULT NULL,
CHANGE date_added created_at DATETIME NOT NULL,
CHANGE last_modified modified_at DATETIME NOT NULL
');
$this->addSql('RENAME TABLE stages_items TO config_stage_item');
$this->addSql('ALTER TABLE config_stage_item ENGINE = InnoDB');
$this->addSql('ALTER TABLE config_stage_item CHARACTER SET = utf8mb4');
$this->addSql('UPDATE config_stage_item SET status = 0 WHERE status IS NULL');
$this->addSql('
ALTER TABLE config_stage_item
CHANGE stages_id stage_id INT DEFAULT NULL,
CHANGE administrators_groups_id group_id INT DEFAULT NULL,
CHANGE message_subject message_subject VARCHAR(255) DEFAULT NULL,
CHANGE message_body message_body LONGTEXT DEFAULT NULL,
CHANGE task name VARCHAR(255) NOT NULL,
CHANGE status enabled TINYINT(1) NOT NULL,
CHANGE date_added created_at DATETIME NOT NULL,
CHANGE last_modified modified_at DATETIME NOT NULL
');
$this->addSql('DROP INDEX idx_stages_id ON config_stage_item');
$this->addSql('DROP INDEX idx_task ON config_stage_item');
$this->addSql('DROP INDEX idx_administrators_groups_id ON config_stage_item');
$this->addSql('CREATE INDEX idx_name ON config_stage_item (name)');
$this->addSql('CREATE INDEX IDX_85C7B0AD2298D193 ON config_stage_item (stage_id)');
$this->addSql('CREATE INDEX IDX_85C7B0ADFE54D947 ON config_stage_item (group_id)');
$this->addSql('DELETE FROM config_stage_item WHERE stage_id NOT IN (SELECT id FROM config_stage)');
$this->addSql('UPDATE config_stage_item SET group_id = NULL WHERE group_id NOT IN (SELECT id FROM user_group)');
$this->addSql('ALTER TABLE config_stage_item ADD CONSTRAINT FK_85C7B0AD2298D193 FOREIGN KEY (stage_id) REFERENCES config_stage (id) ON DELETE CASCADE');
$this->addSql('ALTER TABLE config_stage_item ADD CONSTRAINT FK_85C7B0ADFE54D947 FOREIGN KEY (group_id) REFERENCES user_group (id) ON DELETE SET NULL');
}
public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
$this->addSql('ALTER TABLE config_stage_item DROP FOREIGN KEY FK_85C7B0ADFE54D947');
$this->addSql('ALTER TABLE config_stage_item DROP FOREIGN KEY FK_85C7B0AD2298D193');
$this->addSql('RENAME TABLE config_stage TO stages');
$this->addSql('ALTER TABLE stages ENGINE = MyISAM');
$this->addSql('ALTER TABLE stages CHARACTER SET = latin1');
$this->addSql('
ALTER TABLE stages
ADD administrators TEXT NOT NULL AFTER name,
CHANGE name name VARCHAR(32) NOT NULL,
CHANGE message_subject message_subject VARCHAR(255) DEFAULT NULL,
CHANGE message_body message_body LONGTEXT DEFAULT NULL,
CHANGE created_at date_added DATETIME DEFAULT NULL,
CHANGE modified_at last_modified DATETIME DEFAULT NULL
');
$this->addSql('RENAME TABLE config_stage_item TO stages_items');
$this->addSql('ALTER TABLE stages_items ENGINE = MyISAM');
$this->addSql('ALTER TABLE stages_items CHARACTER SET = latin1');
$this->addSql('
ALTER TABLE stages_items
CHANGE stage_id stages_id INT DEFAULT NULL,
CHANGE group_id administrators_groups_id INT DEFAULT NULL,
CHANGE name task VARCHAR(255) NOT NULL,
CHANGE message_subject message_subject VARCHAR(255) DEFAULT NULL,
CHANGE message_body message_body LONGTEXT DEFAULT NULL,
CHANGE enabled status TINYINT(1) DEFAULT \'1\',
CHANGE created_at date_added DATETIME DEFAULT NULL,
CHANGE modified_at last_modified DATETIME DEFAULT NULL
');
$this->addSql('DROP INDEX idx_name ON stages_items');
$this->addSql('DROP INDEX IDX_85C7B0AD2298D193 ON stages_items');
$this->addSql('DROP INDEX IDX_85C7B0ADFE54D947 ON stages_items');
$this->addSql('CREATE INDEX idx_stages_id ON stages_items (stages_id)');
$this->addSql('CREATE INDEX idx_task ON stages_items (task)');
$this->addSql('CREATE INDEX idx_administrators_groups_id ON stages_items (administrators_groups_id)');
}
}