migrations/Version20180822165539.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 Version20180822165539 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 customers_messages TO customer_message');
  16.         $this->addSql('ALTER TABLE customer_message ENGINE = InnoDB');
  17.         $this->addSql('ALTER TABLE customer_message CHARACTER SET = utf8mb4');
  18.         $this->addSql('UPDATE customer_message SET is_read = 0 WHERE is_read IS NULL');
  19.         $this->addSql('ALTER TABLE customer_message ADD modified_at DATETIME DEFAULT NULL');
  20.         $this->addSql('UPDATE customer_message SET modified_at = date_added');
  21.         $this->addSql('
  22.             ALTER TABLE customer_message
  23.                 CHANGE customers_id customer_id INT DEFAULT NULL,
  24.                 CHANGE administrators_id user_id INT DEFAULT NULL,
  25.                 CHANGE folders_id folder_id INT DEFAULT NULL,
  26.                 CHANGE parent_id parent_id INT DEFAULT NULL,
  27.                 CHANGE subject subject VARCHAR(255) DEFAULT NULL,
  28.                 CHANGE body body LONGTEXT DEFAULT NULL,
  29.                 CHANGE is_read opened TINYINT(1) NOT NULL,
  30.                 CHANGE status mailbox VARCHAR(255) NOT NULL,
  31.                 CHANGE date_added created_at DATETIME NOT NULL,
  32.                 CHANGE modified_at modified_at DATETIME NOT NULL
  33.         ');
  34.         $this->addSql('UPDATE customer_message SET mailbox = \'draft\' WHERE mailbox = \'0\' OR mailbox = \'\' OR mailbox is NULL');
  35.         $this->addSql('UPDATE customer_message SET mailbox = \'inbox\' WHERE mailbox = \'1\'');
  36.         $this->addSql('UPDATE customer_message SET mailbox = \'sent\' WHERE mailbox = \'2\'');
  37.         $this->addSql('ALTER TABLE customer_message CHANGE mailbox mailbox ENUM(\'inbox\', \'draft\', \'sent\') NOT NULL COMMENT \'(DC2Type:MailboxType)\'');
  38.         $this->addSql('DROP INDEX idx_customers_id ON customer_message');
  39.         $this->addSql('DROP INDEX idx_administrators_id ON customer_message');
  40.         $this->addSql('DROP INDEX idx_folders_id ON customer_message');
  41.         $this->addSql('DROP INDEX idx_parent_id ON customer_message');
  42.         $this->addSql('CREATE INDEX IDX_AA6094C19395C3F3 ON customer_message (customer_id)');
  43.         $this->addSql('CREATE INDEX IDX_AA6094C1A76ED395 ON customer_message (user_id)');
  44.         $this->addSql('CREATE INDEX IDX_AA6094C1162CB942 ON customer_message (folder_id)');
  45.         $this->addSql('CREATE INDEX IDX_AA6094C1727ACA70 ON customer_message (parent_id)');
  46.         $this->addSql('CREATE INDEX idx_subject ON customer_message (subject)');
  47.         $this->addSql('DELETE FROM customer_message WHERE customer_id NOT IN (SELECT id FROM customer)');
  48.         $this->addSql('UPDATE customer_message SET user_id = NULL WHERE user_id NOT IN (SELECT id FROM user)');
  49.         $this->addSql('UPDATE customer_message SET folder_id = NULL WHERE folder_id NOT IN (SELECT id FROM config_folder)');
  50.         $this->addSql('UPDATE customer_message SET parent_id = NULL WHERE parent_id NOT IN (SELECT id FROM (SELECT id FROM customer_message) tmp)');
  51.         $this->addSql('ALTER TABLE customer_message ADD CONSTRAINT FK_AA6094C19395C3F3 FOREIGN KEY (customer_id) REFERENCES customer (id) ON DELETE CASCADE');
  52.         $this->addSql('ALTER TABLE customer_message ADD CONSTRAINT FK_AA6094C1A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE SET NULL');
  53.         $this->addSql('ALTER TABLE customer_message ADD CONSTRAINT FK_AA6094C1162CB942 FOREIGN KEY (folder_id) REFERENCES config_folder (id) ON DELETE SET NULL');
  54.         $this->addSql('ALTER TABLE customer_message ADD CONSTRAINT FK_AA6094C1727ACA70 FOREIGN KEY (parent_id) REFERENCES customer_message (id) ON DELETE SET NULL');
  55.     }
  56.     public function down(Schema $schema): void
  57.     {
  58.         // this down() migration is auto-generated, please modify it to your needs
  59.         $this->abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
  60.         $this->addSql('ALTER TABLE customer_message DROP FOREIGN KEY FK_AA6094C1727ACA70');
  61.         $this->addSql('ALTER TABLE customer_message DROP FOREIGN KEY FK_AA6094C1162CB942');
  62.         $this->addSql('ALTER TABLE customer_message DROP FOREIGN KEY FK_AA6094C1A76ED395');
  63.         $this->addSql('ALTER TABLE customer_message DROP FOREIGN KEY FK_AA6094C19395C3F3');
  64.         $this->addSql('RENAME TABLE customer_message TO customers_messages');
  65.         $this->addSql('ALTER TABLE customers_messages ENGINE = InnoDB');
  66.         $this->addSql('ALTER TABLE customers_messages CHARACTER SET = utf8mb4');
  67.         $this->addSql('
  68.             ALTER TABLE customers_messages
  69.                 DROP modified_at,
  70.                 CHANGE customer_id customers_id INT NOT NULL,
  71.                 CHANGE user_id administrators_id INT NOT NULL,
  72.                 CHANGE folder_id folders_id INT NOT NULL,
  73.                 CHANGE parent_id parent_id INT NOT NULL,
  74.                 CHANGE subject subject VARCHAR(255) DEFAULT NULL,
  75.                 CHANGE body body LONGTEXT DEFAULT NULL,
  76.                 CHANGE opened is_read TINYINT(1) DEFAULT \'0\',
  77.                 CHANGE mailbox status VARCHAR(255) DEFAULT NULL,
  78.                 CHANGE created_at date_added DATETIME DEFAULT NULL
  79.         ');
  80.         $this->addSql('UPDATE customers_messages SET status = \'0\' WHERE status = \'draft\'');
  81.         $this->addSql('UPDATE customers_messages SET status = \'1\' WHERE status = \'inbox\'');
  82.         $this->addSql('UPDATE customers_messages SET status = \'2\' WHERE status = \'sent\'');
  83.         $this->addSql('ALTER TABLE customers_messages CHANGE status status TINYINT(1) DEFAULT \'0\'');
  84.         $this->addSql('DROP INDEX IDX_AA6094C19395C3F3 ON customers_messages');
  85.         $this->addSql('DROP INDEX IDX_AA6094C1A76ED395 ON customers_messages');
  86.         $this->addSql('DROP INDEX IDX_AA6094C1162CB942 ON customers_messages');
  87.         $this->addSql('DROP INDEX IDX_AA6094C1727ACA70 ON customers_messages');
  88.         $this->addSql('DROP INDEX idx_subject ON customers_messages');
  89.         $this->addSql('CREATE INDEX idx_customers_id ON customers_messages (customers_id)');
  90.         $this->addSql('CREATE INDEX idx_administrators_id ON customers_messages (administrators_id)');
  91.         $this->addSql('CREATE INDEX idx_parent_id ON customers_messages (parent_id)');
  92.         $this->addSql('CREATE INDEX idx_folders_id ON customers_messages (folders_id)');
  93.     }
  94. }