migrations/Version20180813165528.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations;
  4. use Doctrine\DBAL\Schema\Schema;
  5. use Doctrine\Migrations\AbstractMigration;
  6. /**
  7.  * Auto-generated Migration: Please modify to your needs!
  8.  */
  9. final class Version20180813165528 extends AbstractMigration
  10. {
  11.     public function up(Schema $schema): void
  12.     {
  13.         // this up() migration is auto-generated, please modify it to your needs
  14.         $this->abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
  15.         $this->addSql('RENAME TABLE stages TO config_stage');
  16.         $this->addSql('ALTER TABLE config_stage ENGINE = InnoDB');
  17.         $this->addSql('ALTER TABLE config_stage CHARACTER SET = utf8mb4');
  18.         $this->addSql('
  19.             ALTER TABLE config_stage
  20.                 DROP administrators,
  21.                 CHANGE name name VARCHAR(255) NOT NULL,
  22.                 CHANGE message_subject message_subject VARCHAR(255) DEFAULT NULL,
  23.                 CHANGE message_body message_body LONGTEXT DEFAULT NULL,
  24.                 CHANGE date_added created_at DATETIME NOT NULL,
  25.                 CHANGE last_modified modified_at DATETIME NOT NULL
  26.         ');
  27.         $this->addSql('RENAME TABLE stages_items TO config_stage_item');
  28.         $this->addSql('ALTER TABLE config_stage_item ENGINE = InnoDB');
  29.         $this->addSql('ALTER TABLE config_stage_item CHARACTER SET = utf8mb4');
  30.         $this->addSql('UPDATE config_stage_item SET status = 0 WHERE status IS NULL');
  31.         $this->addSql('
  32.             ALTER TABLE config_stage_item
  33.                 CHANGE stages_id stage_id INT DEFAULT NULL,
  34.                 CHANGE administrators_groups_id group_id INT DEFAULT NULL,
  35.                 CHANGE message_subject message_subject VARCHAR(255) DEFAULT NULL,
  36.                 CHANGE message_body message_body LONGTEXT DEFAULT NULL,
  37.                 CHANGE task name VARCHAR(255) NOT NULL,
  38.                 CHANGE status enabled TINYINT(1) NOT NULL,
  39.                 CHANGE date_added created_at DATETIME NOT NULL,
  40.                 CHANGE last_modified modified_at DATETIME NOT NULL
  41.         ');
  42.         $this->addSql('DROP INDEX idx_stages_id ON config_stage_item');
  43.         $this->addSql('DROP INDEX idx_task ON config_stage_item');
  44.         $this->addSql('DROP INDEX idx_administrators_groups_id ON config_stage_item');
  45.         $this->addSql('CREATE INDEX idx_name ON config_stage_item (name)');
  46.         $this->addSql('CREATE INDEX IDX_85C7B0AD2298D193 ON config_stage_item (stage_id)');
  47.         $this->addSql('CREATE INDEX IDX_85C7B0ADFE54D947 ON config_stage_item (group_id)');
  48.         $this->addSql('DELETE FROM config_stage_item WHERE stage_id NOT IN (SELECT id FROM config_stage)');
  49.         $this->addSql('UPDATE config_stage_item SET group_id = NULL WHERE group_id NOT IN (SELECT id FROM user_group)');
  50.         $this->addSql('ALTER TABLE config_stage_item ADD CONSTRAINT FK_85C7B0AD2298D193 FOREIGN KEY (stage_id) REFERENCES config_stage (id) ON DELETE CASCADE');
  51.         $this->addSql('ALTER TABLE config_stage_item ADD CONSTRAINT FK_85C7B0ADFE54D947 FOREIGN KEY (group_id) REFERENCES user_group (id) ON DELETE SET NULL');
  52.     }
  53.     public function down(Schema $schema): void
  54.     {
  55.         // this down() migration is auto-generated, please modify it to your needs
  56.         $this->abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
  57.         $this->addSql('ALTER TABLE config_stage_item DROP FOREIGN KEY FK_85C7B0ADFE54D947');
  58.         $this->addSql('ALTER TABLE config_stage_item DROP FOREIGN KEY FK_85C7B0AD2298D193');
  59.         $this->addSql('RENAME TABLE config_stage TO stages');
  60.         $this->addSql('ALTER TABLE stages ENGINE = MyISAM');
  61.         $this->addSql('ALTER TABLE stages CHARACTER SET = latin1');
  62.         $this->addSql('
  63.             ALTER TABLE stages
  64.                 ADD administrators TEXT NOT NULL AFTER name,
  65.                 CHANGE name name VARCHAR(32) NOT NULL,
  66.                 CHANGE message_subject message_subject VARCHAR(255) DEFAULT NULL,
  67.                 CHANGE message_body message_body LONGTEXT DEFAULT NULL,
  68.                 CHANGE created_at date_added DATETIME DEFAULT NULL,
  69.                 CHANGE modified_at last_modified DATETIME DEFAULT NULL
  70.         ');
  71.         $this->addSql('RENAME TABLE config_stage_item TO stages_items');
  72.         $this->addSql('ALTER TABLE stages_items ENGINE = MyISAM');
  73.         $this->addSql('ALTER TABLE stages_items CHARACTER SET = latin1');
  74.         $this->addSql('
  75.             ALTER TABLE stages_items
  76.                 CHANGE stage_id stages_id INT DEFAULT NULL,
  77.                 CHANGE group_id administrators_groups_id INT DEFAULT NULL,
  78.                 CHANGE name task VARCHAR(255) NOT NULL,
  79.                 CHANGE message_subject message_subject VARCHAR(255) DEFAULT NULL,
  80.                 CHANGE message_body message_body LONGTEXT DEFAULT NULL,
  81.                 CHANGE enabled status TINYINT(1) DEFAULT \'1\',
  82.                 CHANGE created_at date_added DATETIME DEFAULT NULL,
  83.                 CHANGE modified_at last_modified DATETIME DEFAULT NULL
  84.         ');
  85.         $this->addSql('DROP INDEX idx_name ON stages_items');
  86.         $this->addSql('DROP INDEX IDX_85C7B0AD2298D193 ON stages_items');
  87.         $this->addSql('DROP INDEX IDX_85C7B0ADFE54D947 ON stages_items');
  88.         $this->addSql('CREATE INDEX idx_stages_id ON stages_items (stages_id)');
  89.         $this->addSql('CREATE INDEX idx_task ON stages_items (task)');
  90.         $this->addSql('CREATE INDEX idx_administrators_groups_id ON stages_items (administrators_groups_id)');
  91.     }
  92. }