migrations/Version20180817221423.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 Version20180817221423 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_complaints TO customer_complaint');
  16.         $this->addSql('ALTER TABLE customer_complaint ENGINE = InnoDB');
  17.         $this->addSql('ALTER TABLE customer_complaint CHARACTER SET = utf8mb4');
  18.         $this->addSql('UPDATE customer_complaint SET status = 0 WHERE status IS NULL');
  19.         $this->addSql('
  20.             ALTER TABLE customer_complaint
  21.                 CHANGE customers_id customer_id INT DEFAULT NULL,
  22.                 CHANGE administrators_id user_id INT DEFAULT NULL,
  23.                 CHANGE customers_complaints_outcomes_id outcome_id INT DEFAULT NULL,
  24.                 CHANGE customers_complaints_types_id type_id INT DEFAULT NULL,
  25.                 CHANGE complaint message LONGTEXT DEFAULT NULL,
  26.                 CHANGE status enabled TINYINT(1) NOT NULL,
  27.                 CHANGE date_added created_at DATETIME NOT NULL,
  28.                 CHANGE last_modified modified_at DATETIME NOT NULL
  29.         ');
  30.         $this->addSql('DROP INDEX idx_customers_id ON customer_complaint');
  31.         $this->addSql('DROP INDEX idx_administrators_id ON customer_complaint');
  32.         $this->addSql('CREATE INDEX IDX_F4DACAAF9395C3F3 ON customer_complaint (customer_id)');
  33.         $this->addSql('CREATE INDEX IDX_F4DACAAFA76ED395 ON customer_complaint (user_id)');
  34.         $this->addSql('CREATE INDEX IDX_F4DACAAFE6EE6D63 ON customer_complaint (outcome_id)');
  35.         $this->addSql('CREATE INDEX IDX_F4DACAAFC54C8C93 ON customer_complaint (type_id)');
  36.         $this->addSql('RENAME TABLE customers_files TO customer_file');
  37.         $this->addSql('ALTER TABLE customer_file ENGINE = InnoDB');
  38.         $this->addSql('ALTER TABLE customer_file CHARACTER SET = utf8mb4');
  39.         $this->addSql('UPDATE customer_file SET is_public = 0 WHERE is_public IS NULL');
  40.         $this->addSql('ALTER TABLE customer_file ADD modified_at DATETIME DEFAULT NULL');
  41.         $this->addSql('UPDATE customer_file SET modified_at = date_added');
  42.         $this->addSql('
  43.             ALTER TABLE customer_file
  44.                 CHANGE customers_id customer_id INT DEFAULT NULL,
  45.                 CHANGE administrators_id user_id INT DEFAULT NULL,
  46.                 CHANGE folders_id folder_id INT DEFAULT NULL,
  47.                 CHANGE title name VARCHAR(255) NOT NULL,
  48.                 CHANGE file file VARCHAR(255) NOT NULL,
  49.                 CHANGE is_public public TINYINT(1) NOT NULL,
  50.                 CHANGE date_added created_at DATETIME NOT NULL,
  51.                 CHANGE modified_at modified_at DATETIME NOT NULL
  52.         ');
  53.         $this->addSql('DROP INDEX idx_customers_id ON customer_file');
  54.         $this->addSql('CREATE INDEX IDX_D80E92679395C3F3 ON customer_file (customer_id)');
  55.         $this->addSql('CREATE INDEX IDX_D80E9267A76ED395 ON customer_file (user_id)');
  56.         $this->addSql('CREATE INDEX IDX_D80E9267162CB942 ON customer_file (folder_id)');
  57.         $this->addSql('UPDATE customers_services SET price = price * quantity');
  58.         $this->addSql('RENAME TABLE customers_services TO customer_invoice');
  59.         $this->addSql('ALTER TABLE customer_invoice ENGINE = InnoDB');
  60.         $this->addSql('ALTER TABLE customer_invoice CHARACTER SET = utf8mb4');
  61.         $this->addSql('UPDATE customer_invoice SET is_first = 0 WHERE is_first IS NULL');
  62.         $this->addSql('UPDATE customer_invoice SET products_id = 1 WHERE products_id IS NULL OR products_id = 0');
  63.         $this->addSql('
  64.             ALTER TABLE customer_invoice
  65.                 DROP quantity,
  66.                 CHANGE customers_id customer_id INT DEFAULT NULL,
  67.                 CHANGE administrators_id user_id INT DEFAULT NULL,
  68.                 CHANGE products_id product_id INT DEFAULT NULL,
  69.                 CHANGE description description VARCHAR(255) DEFAULT NULL,
  70.                 CHANGE price price NUMERIC(10, 2) DEFAULT NULL,
  71.                 CHANGE is_first first TINYINT(1) NOT NULL,
  72.                 CHANGE date_added created_at DATETIME NOT NULL,
  73.                 CHANGE last_modified modified_at DATETIME NOT NULL
  74.         ');
  75.         $this->addSql('DROP INDEX idx_customers_id ON customer_invoice');
  76.         $this->addSql('DROP INDEX idx_administrators_id ON customer_invoice');
  77.         $this->addSql('DROP INDEX idx_customers_id_products_id ON customer_invoice');
  78.         $this->addSql('CREATE INDEX IDX_8CB8B3FA9395C3F3 ON customer_invoice (customer_id)');
  79.         $this->addSql('CREATE INDEX IDX_8CB8B3FAA76ED395 ON customer_invoice (user_id)');
  80.         $this->addSql('CREATE INDEX IDX_8CB8B3FA4584665A ON customer_invoice (product_id)');
  81.         $this->addSql('DELETE FROM customer_complaint WHERE customer_id NOT IN (SELECT id FROM customer)');
  82.         $this->addSql('UPDATE customer_complaint SET user_id = NULL WHERE user_id NOT IN (SELECT id FROM user)');
  83.         $this->addSql('UPDATE customer_complaint SET outcome_id = NULL WHERE outcome_id NOT IN (SELECT id FROM config_complaint_outcome)');
  84.         $this->addSql('UPDATE customer_complaint SET type_id = NULL WHERE type_id NOT IN (SELECT id FROM config_complaint_type)');
  85.         $this->addSql('DELETE FROM customer_file WHERE customer_id NOT IN (SELECT id FROM customer)');
  86.         $this->addSql('UPDATE customer_file SET user_id = NULL WHERE user_id NOT IN (SELECT id FROM user)');
  87.         $this->addSql('UPDATE customer_file SET folder_id = NULL WHERE folder_id NOT IN (SELECT id FROM config_folder)');
  88.         $this->addSql('DELETE FROM customer_invoice WHERE customer_id NOT IN (SELECT id FROM customer)');
  89.         $this->addSql('UPDATE customer_invoice SET user_id = NULL WHERE user_id NOT IN (SELECT id FROM user)');
  90.         $this->addSql('UPDATE customer_invoice SET product_id = NULL WHERE product_id NOT IN (SELECT id FROM config_product)');
  91.         $this->addSql('ALTER TABLE customer_complaint ADD CONSTRAINT FK_F4DACAAF9395C3F3 FOREIGN KEY (customer_id) REFERENCES customer (id) ON DELETE CASCADE');
  92.         $this->addSql('ALTER TABLE customer_complaint ADD CONSTRAINT FK_F4DACAAFA76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE SET NULL');
  93.         $this->addSql('ALTER TABLE customer_complaint ADD CONSTRAINT FK_F4DACAAFE6EE6D63 FOREIGN KEY (outcome_id) REFERENCES config_complaint_outcome (id) ON DELETE SET NULL');
  94.         $this->addSql('ALTER TABLE customer_complaint ADD CONSTRAINT FK_F4DACAAFC54C8C93 FOREIGN KEY (type_id) REFERENCES config_complaint_type (id) ON DELETE SET NULL');
  95.         $this->addSql('ALTER TABLE customer_file ADD CONSTRAINT FK_D80E92679395C3F3 FOREIGN KEY (customer_id) REFERENCES customer (id) ON DELETE CASCADE');
  96.         $this->addSql('ALTER TABLE customer_file ADD CONSTRAINT FK_D80E9267A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE SET NULL');
  97.         $this->addSql('ALTER TABLE customer_file ADD CONSTRAINT FK_D80E9267162CB942 FOREIGN KEY (folder_id) REFERENCES config_folder (id) ON DELETE SET NULL');
  98.         $this->addSql('ALTER TABLE customer_invoice ADD CONSTRAINT FK_8CB8B3FA9395C3F3 FOREIGN KEY (customer_id) REFERENCES customer (id) ON DELETE CASCADE');
  99.         $this->addSql('ALTER TABLE customer_invoice ADD CONSTRAINT FK_8CB8B3FAA76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE SET NULL');
  100.         $this->addSql('ALTER TABLE customer_invoice ADD CONSTRAINT FK_8CB8B3FA4584665A FOREIGN KEY (product_id) REFERENCES config_product (id) ON DELETE SET NULL');
  101.     }
  102.     public function down(Schema $schema): void
  103.     {
  104.         // this down() migration is auto-generated, please modify it to your needs
  105.         $this->abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
  106.         $this->addSql('ALTER TABLE customer_invoice DROP FOREIGN KEY FK_8CB8B3FA4584665A');
  107.         $this->addSql('ALTER TABLE customer_invoice DROP FOREIGN KEY FK_8CB8B3FAA76ED395');
  108.         $this->addSql('ALTER TABLE customer_invoice DROP FOREIGN KEY FK_8CB8B3FA9395C3F3');
  109.         $this->addSql('ALTER TABLE customer_file DROP FOREIGN KEY FK_D80E9267162CB942');
  110.         $this->addSql('ALTER TABLE customer_file DROP FOREIGN KEY FK_D80E9267A76ED395');
  111.         $this->addSql('ALTER TABLE customer_file DROP FOREIGN KEY FK_D80E92679395C3F3');
  112.         $this->addSql('ALTER TABLE customer_complaint DROP FOREIGN KEY FK_F4DACAAFC54C8C93');
  113.         $this->addSql('ALTER TABLE customer_complaint DROP FOREIGN KEY FK_F4DACAAFE6EE6D63');
  114.         $this->addSql('ALTER TABLE customer_complaint DROP FOREIGN KEY FK_F4DACAAFA76ED395');
  115.         $this->addSql('ALTER TABLE customer_complaint DROP FOREIGN KEY FK_F4DACAAF9395C3F3');
  116.         $this->addSql('RENAME TABLE customer_complaint TO customers_complaints');
  117.         $this->addSql('ALTER TABLE customers_complaints ENGINE = MyISAM');
  118.         $this->addSql('ALTER TABLE customers_complaints CHARACTER SET = latin1');
  119.         $this->addSql('
  120.             ALTER TABLE customers_complaints
  121.                 CHANGE customer_id customers_id INT NOT NULL,
  122.                 CHANGE user_id administrators_id INT NOT NULL,
  123.                 CHANGE outcome_id customers_complaints_outcomes_id INT NOT NULL,
  124.                 CHANGE type_id customers_complaints_types_id INT NOT NULL,
  125.                 CHANGE message complaint TEXT DEFAULT NULL,
  126.                 CHANGE enabled status TINYINT(1) DEFAULT \'0\',
  127.                 CHANGE created_at date_added DATETIME DEFAULT NULL,
  128.                 CHANGE modified_at last_modified DATETIME DEFAULT NULL
  129.         ');
  130.         $this->addSql('DROP INDEX IDX_F4DACAAF9395C3F3 ON customers_complaints');
  131.         $this->addSql('DROP INDEX IDX_F4DACAAFA76ED395 ON customers_complaints');
  132.         $this->addSql('DROP INDEX IDX_F4DACAAFE6EE6D63 ON customers_complaints');
  133.         $this->addSql('DROP INDEX IDX_F4DACAAFC54C8C93 ON customers_complaints');
  134.         $this->addSql('CREATE INDEX idx_administrators_id ON customers_complaints (administrators_id)');
  135.         $this->addSql('CREATE INDEX idx_customers_id ON customers_complaints (customers_id)');
  136.         $this->addSql('RENAME TABLE customer_file TO customers_files');
  137.         $this->addSql('ALTER TABLE customers_files ENGINE = MyISAM');
  138.         $this->addSql('ALTER TABLE customers_files CHARACTER SET = latin1');
  139.         $this->addSql('
  140.             ALTER TABLE customers_files
  141.                 DROP modified_at,
  142.                 CHANGE customer_id customers_id INT NOT NULL,
  143.                 CHANGE user_id administrators_id INT NOT NULL,
  144.                 CHANGE folder_id folders_id INT DEFAULT NULL,
  145.                 CHANGE name title VARCHAR(255) NOT NULL,
  146.                 CHANGE file file VARCHAR(255) DEFAULT NULL,
  147.                 CHANGE public is_public TINYINT(1) DEFAULT \'1\',
  148.                 CHANGE created_at date_added DATETIME DEFAULT NULL
  149.         ');
  150.         $this->addSql('DROP INDEX IDX_D80E92679395C3F3 ON customers_files');
  151.         $this->addSql('DROP INDEX IDX_D80E9267A76ED395 ON customers_files');
  152.         $this->addSql('DROP INDEX IDX_D80E9267162CB942 ON customers_files');
  153.         $this->addSql('CREATE INDEX idx_customers_id ON customers_files (customers_id)');
  154.         $this->addSql('RENAME TABLE customer_invoice TO customers_services');
  155.         $this->addSql('ALTER TABLE customers_services ENGINE = MyISAM');
  156.         $this->addSql('ALTER TABLE customers_services CHARACTER SET = latin1');
  157.         $this->addSql('
  158.             ALTER TABLE customers_services
  159.                 ADD quantity SMALLINT(6) NOT NULL AFTER description,
  160.                 CHANGE customer_id customers_id INT NOT NULL,
  161.                 CHANGE user_id administrators_id INT NOT NULL,
  162.                 CHANGE product_id products_id INT NOT NULL,
  163.                 CHANGE description description VARCHAR(255) DEFAULT NULL,
  164.                 CHANGE price price NUMERIC(15, 2) DEFAULT \'0.00\',
  165.                 CHANGE first is_first TINYINT(1) DEFAULT \'0\',
  166.                 CHANGE created_at date_added DATETIME DEFAULT NULL,
  167.                 CHANGE modified_at last_modified DATETIME DEFAULT NULL
  168.         ');
  169.         $this->addSql('UPDATE customers_services SET quantity = 1');
  170.         $this->addSql('DROP INDEX IDX_8CB8B3FA9395C3F3 ON customers_services');
  171.         $this->addSql('DROP INDEX IDX_8CB8B3FAA76ED395 ON customers_services');
  172.         $this->addSql('DROP INDEX IDX_8CB8B3FA4584665A ON customers_services');
  173.         $this->addSql('CREATE INDEX idx_administrators_id ON customers_services (administrators_id)');
  174.         $this->addSql('CREATE INDEX idx_customers_id ON customers_services (customers_id)');
  175.         $this->addSql('CREATE INDEX idx_customers_id_products_id ON customers_services (customers_id, products_id)');
  176.     }
  177. }