migrations/Version20180814170413.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 Version20180814170413 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 events TO event');
  16.         $this->addSql('ALTER TABLE event ENGINE = InnoDB');
  17.         $this->addSql('ALTER TABLE event CHARACTER SET = utf8mb4');
  18.         $this->addSql('UPDATE event SET status = 0 WHERE status IS NULL');
  19.         $this->addSql('
  20.             ALTER TABLE event
  21.                 CHANGE from_administrators_id user_id INT DEFAULT NULL,
  22.                 CHANGE to_administrators_id target_user_id INT DEFAULT NULL,
  23.                 CHANGE customers_id customer_id INT DEFAULT NULL,
  24.                 CHANGE leads_id lead_id INT DEFAULT NULL,
  25.                 CHANGE tags_id tag_id INT DEFAULT NULL,
  26.                 CHANGE type type VARCHAR(255) DEFAULT NULL,
  27.                 CHANGE priority priority VARCHAR(255) DEFAULT NULL,
  28.                 CHANGE description description LONGTEXT DEFAULT NULL,
  29.                 CHANGE status enabled TINYINT(1) NOT NULL,
  30.                 CHANGE date_added created_at DATETIME NOT NULL,
  31.                 CHANGE last_modified modified_at DATETIME NOT NULL,
  32.                 CHANGE due_date due_at DATETIME DEFAULT NULL
  33.         ');
  34.         $this->addSql('UPDATE event SET type = \'task\' WHERE type = \'Task\'');
  35.         $this->addSql('UPDATE event SET type = \'reminder\' WHERE type = \'Reminder\'');
  36.         $this->addSql('UPDATE event SET type = \'deadline\' WHERE type = \'Deadline\'');
  37.         $this->addSql('UPDATE event SET priority = \'low\' WHERE priority = \'0\'');
  38.         $this->addSql('UPDATE event SET priority = \'medium\' WHERE priority = \'1\'');
  39.         $this->addSql('UPDATE event SET priority = \'high\' WHERE priority = \'2\'');
  40.         $this->addSql('ALTER TABLE event CHANGE type type ENUM(\'task\', \'reminder\', \'deadline\') DEFAULT NULL COMMENT \'(DC2Type:EventType)\'');
  41.         $this->addSql('ALTER TABLE event CHANGE priority priority ENUM(\'low\', \'medium\', \'high\') DEFAULT NULL COMMENT \'(DC2Type:EventPriorityType)\'');
  42.         $this->addSql('DROP INDEX idx_from_administrators_id ON event');
  43.         $this->addSql('DROP INDEX idx_to_administrators_id ON event');
  44.         $this->addSql('DROP INDEX idx_leads_id ON event');
  45.         $this->addSql('DROP INDEX idx_customers_id ON event');
  46.         $this->addSql('DROP INDEX idx_tags_id ON event');
  47.         $this->addSql('CREATE INDEX IDX_3BAE0AA7A76ED395 ON event (user_id)');
  48.         $this->addSql('CREATE INDEX IDX_3BAE0AA76C066AFE ON event (target_user_id)');
  49.         $this->addSql('CREATE INDEX IDX_3BAE0AA79395C3F3 ON event (customer_id)');
  50.         $this->addSql('CREATE INDEX IDX_3BAE0AA755458D ON event (lead_id)');
  51.         $this->addSql('CREATE INDEX IDX_3BAE0AA7BAD26311 ON event (tag_id)');
  52.         $this->addSql('RENAME TABLE events_comments TO event_comment');
  53.         $this->addSql('ALTER TABLE event_comment ENGINE = InnoDB');
  54.         $this->addSql('ALTER TABLE event_comment CHARACTER SET = utf8mb4');
  55.         $this->addSql('ALTER TABLE event_comment ADD modified_at DATETIME DEFAULT NULL');
  56.         $this->addSql('UPDATE event_comment SET modified_at = date_added');
  57.         $this->addSql('DELETE FROM event_comment WHERE comments IS NULL OR comments = \'\'');
  58.         $this->addSql('
  59.             ALTER TABLE event_comment
  60.                 DROP comments_id,
  61.                 CHANGE events_id event_id INT DEFAULT NULL,
  62.                 CHANGE administrators_id user_id INT DEFAULT NULL,
  63.                 CHANGE comments body LONGTEXT NOT NULL,
  64.                 CHANGE date_added created_at DATETIME NOT NULL,
  65.                 CHANGE modified_at modified_at DATETIME NOT NULL
  66.         ');
  67.         $this->addSql('DROP INDEX idx_events_id ON event_comment');
  68.         $this->addSql('DROP INDEX idx_administrators_id ON event_comment');
  69.         $this->addSql('CREATE INDEX IDX_1123FBC371F7E88B ON event_comment (event_id)');
  70.         $this->addSql('CREATE INDEX IDX_1123FBC3A76ED395 ON event_comment (user_id)');
  71.         $this->addSql('RENAME TABLE events_tags TO event_tag');
  72.         $this->addSql('ALTER TABLE event_tag ENGINE = InnoDB');
  73.         $this->addSql('ALTER TABLE event_tag CHARACTER SET = utf8mb4');
  74.         $this->addSql('
  75.             ALTER TABLE event_tag
  76.                 CHANGE name name VARCHAR(255) NOT NULL,
  77.                 CHANGE color color VARCHAR(6) DEFAULT NULL
  78.         ');
  79.         $this->addSql('UPDATE event SET user_id = NULL WHERE user_id NOT IN (SELECT id FROM user)');
  80.         $this->addSql('UPDATE event SET target_user_id = NULL WHERE target_user_id NOT IN (SELECT id FROM user)');
  81.         $this->addSql('UPDATE event SET customer_id = NULL WHERE customer_id NOT IN (SELECT id FROM customer)');
  82.         $this->addSql('UPDATE event SET lead_id = NULL WHERE lead_id NOT IN (SELECT id FROM lead)');
  83.         $this->addSql('UPDATE event SET tag_id = NULL WHERE tag_id NOT IN (SELECT id FROM event_tag)');
  84.         $this->addSql('DELETE FROM event_comment WHERE event_id NOT IN (SELECT id FROM event)');
  85.         $this->addSql('UPDATE event_comment SET user_id = NULL WHERE user_id NOT IN (SELECT id FROM user)');
  86.         $this->addSql('ALTER TABLE event ADD CONSTRAINT FK_3BAE0AA7A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE SET NULL');
  87.         $this->addSql('ALTER TABLE event ADD CONSTRAINT FK_3BAE0AA76C066AFE FOREIGN KEY (target_user_id) REFERENCES user (id) ON DELETE SET NULL');
  88.         $this->addSql('ALTER TABLE event ADD CONSTRAINT FK_3BAE0AA79395C3F3 FOREIGN KEY (customer_id) REFERENCES customer (id) ON DELETE SET NULL');
  89.         $this->addSql('ALTER TABLE event ADD CONSTRAINT FK_3BAE0AA755458D FOREIGN KEY (lead_id) REFERENCES lead (id) ON DELETE SET NULL');
  90.         $this->addSql('ALTER TABLE event ADD CONSTRAINT FK_3BAE0AA7BAD26311 FOREIGN KEY (tag_id) REFERENCES event_tag (id) ON DELETE SET NULL');
  91.         $this->addSql('ALTER TABLE event_comment ADD CONSTRAINT FK_1123FBC371F7E88B FOREIGN KEY (event_id) REFERENCES event (id) ON DELETE CASCADE');
  92.         $this->addSql('ALTER TABLE event_comment ADD CONSTRAINT FK_1123FBC3A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE SET NULL');
  93.     }
  94.     public function down(Schema $schema): void
  95.     {
  96.         // this down() migration is auto-generated, please modify it to your needs
  97.         $this->abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
  98.         $this->addSql('ALTER TABLE event_comment DROP FOREIGN KEY FK_1123FBC3A76ED395');
  99.         $this->addSql('ALTER TABLE event_comment DROP FOREIGN KEY FK_1123FBC371F7E88B');
  100.         $this->addSql('ALTER TABLE event DROP FOREIGN KEY FK_3BAE0AA7BAD26311');
  101.         $this->addSql('ALTER TABLE event DROP FOREIGN KEY FK_3BAE0AA755458D');
  102.         $this->addSql('ALTER TABLE event DROP FOREIGN KEY FK_3BAE0AA79395C3F3');
  103.         $this->addSql('ALTER TABLE event DROP FOREIGN KEY FK_3BAE0AA76C066AFE');
  104.         $this->addSql('ALTER TABLE event DROP FOREIGN KEY FK_3BAE0AA7A76ED395');
  105.         $this->addSql('RENAME TABLE event TO events');
  106.         $this->addSql('ALTER TABLE events ENGINE = MyISAM');
  107.         $this->addSql('ALTER TABLE events CHARACTER SET = latin1');
  108.         $this->addSql('UPDATE events SET type = \'Task\' WHERE type = \'task\'');
  109.         $this->addSql('UPDATE events SET type = \'Reminder\' WHERE type = \'reminder\'');
  110.         $this->addSql('UPDATE events SET type = \'Deadline\' WHERE type = \'deadline\'');
  111.         $this->addSql('UPDATE events SET priority = \'0\' WHERE priority = \'low\'');
  112.         $this->addSql('UPDATE events SET priority = \'1\' WHERE priority = \'medium\'');
  113.         $this->addSql('UPDATE events SET priority = \'2\' WHERE priority = \'high\'');
  114.         $this->addSql('
  115.             ALTER TABLE events
  116.                 CHANGE user_id from_administrators_id INT NOT NULL,
  117.                 CHANGE target_user_id to_administrators_id INT NOT NULL,
  118.                 CHANGE customer_id customers_id INT DEFAULT NULL,
  119.                 CHANGE lead_id leads_id INT DEFAULT NULL,
  120.                 CHANGE tag_id tags_id INT DEFAULT NULL,
  121.                 CHANGE type type ENUM(\'Task\', \'Reminder\', \'Deadline\') DEFAULT \'Task\',
  122.                 CHANGE priority priority TINYINT(1) DEFAULT \'2\',
  123.                 CHANGE description description LONGTEXT DEFAULT NULL,
  124.                 CHANGE enabled status TINYINT(1) DEFAULT \'0\',
  125.                 CHANGE created_at date_added DATETIME DEFAULT NULL,
  126.                 CHANGE modified_at last_modified DATETIME DEFAULT NULL,
  127.                 CHANGE due_at due_date DATETIME DEFAULT NULL
  128.         ');
  129.         $this->addSql('DROP INDEX IDX_3BAE0AA7A76ED395 ON events');
  130.         $this->addSql('DROP INDEX IDX_3BAE0AA76C066AFE ON events');
  131.         $this->addSql('DROP INDEX IDX_3BAE0AA79395C3F3 ON events');
  132.         $this->addSql('DROP INDEX IDX_3BAE0AA755458D ON events');
  133.         $this->addSql('DROP INDEX IDX_3BAE0AA7BAD26311 ON events');
  134.         $this->addSql('CREATE INDEX idx_from_administrators_id ON events (from_administrators_id)');
  135.         $this->addSql('CREATE INDEX idx_to_administrators_id ON events (to_administrators_id)');
  136.         $this->addSql('CREATE INDEX idx_leads_id ON events (type)');
  137.         $this->addSql('CREATE INDEX idx_customers_id ON events (customers_id)');
  138.         $this->addSql('CREATE INDEX idx_tags_id ON events (tags_id)');
  139.         $this->addSql('RENAME TABLE event_comment TO events_comments');
  140.         $this->addSql('ALTER TABLE events_comments ENGINE = InnoDB');
  141.         $this->addSql('ALTER TABLE events_comments CHARACTER SET = utf8mb4');
  142.         $this->addSql('
  143.             ALTER TABLE events_comments
  144.                 DROP modified_at,
  145.                 ADD comments_id INT NOT NULL AFTER events_id,
  146.                 CHANGE event_id events_id INT NOT NULL,
  147.                 CHANGE user_id administrators_id INT NOT NULL,
  148.                 CHANGE body comments LONGTEXT DEFAULT NULL,
  149.                 CHANGE created_at date_added DATETIME DEFAULT NULL
  150.         ');
  151.         $this->addSql('DROP INDEX IDX_1123FBC371F7E88B ON events_comments');
  152.         $this->addSql('DROP INDEX IDX_1123FBC3A76ED395 ON events_comments');
  153.         $this->addSql('CREATE INDEX idx_events_id ON events_comments (events_id)');
  154.         $this->addSql('CREATE INDEX idx_administrators_id ON events_comments (administrators_id)');
  155.         $this->addSql('CREATE INDEX idx_comments_id ON events_comments (comments_id)');
  156.         $this->addSql('RENAME TABLE event_tag TO events_tags');
  157.         $this->addSql('ALTER TABLE events_tags ENGINE = MyISAM');
  158.         $this->addSql('ALTER TABLE events_tags CHARACTER SET = latin1');
  159.         $this->addSql('
  160.             ALTER TABLE events_tags
  161.                 CHANGE name name VARCHAR(64) NOT NULL,
  162.                 CHANGE color color VARCHAR(6) DEFAULT NULL
  163.         ');
  164.     }
  165. }