migrations/Version20220404163143.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations;
  4. use App\Contracts\User\Gender;
  5. use Doctrine\DBAL\Schema\Schema;
  6. use Doctrine\Migrations\AbstractMigration;
  7. /**
  8.  * Auto-generated Migration: Please modify to your needs!
  9.  */
  10. final class Version20220404163143 extends AbstractMigration
  11. {
  12.     public function getDescription(): string
  13.     {
  14.         return '';
  15.     }
  16.     public function up(Schema $schema): void
  17.     {
  18.         // this up() migration is auto-generated, please modify it to your needs
  19.         $this->addSql('CREATE TABLE administrator (id BIGINT UNSIGNED NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE `utf8_unicode_ci` ENGINE = InnoDB');
  20.         $this->addSql('CREATE TABLE tik_tok_auth (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', access_token VARCHAR(255) NOT NULL, refresh_token VARCHAR(255) NOT NULL, refreshed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE `utf8_unicode_ci` ENGINE = InnoDB');
  21.         $this->addSql('INSERT INTO tik_tok_auth (id, access_token, refresh_token, refreshed_at) SELECT id, access_token, refresh_token, DATE_SUB(access_token_expired_at, INTERVAL 23 HOUR) FROM tiktok_auth');
  22.         $this->addSql('ALTER TABLE administrator ADD CONSTRAINT FK_58DF0651BF396750 FOREIGN KEY (id) REFERENCES user (id) ON DELETE CASCADE');
  23.         $this->addSql('ALTER TABLE creator DROP FOREIGN KEY FK_BC06EA63BF396750');
  24.         $this->addSql('ALTER TABLE creator ADD tik_tok_auth_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', ADD username VARCHAR(255) NOT NULL, ADD gender INT NOT NULL, ADD birthday DATE NOT NULL, CHANGE is_phone_notify_campaigns phone_notify_campaigns TINYINT(1) NOT NULL, CHANGE is_email_notify_campaigns email_notify_campaigns TINYINT(1) NOT NULL, CHANGE is_email_notify_newsletter email_notify_newsletter TINYINT(1) NOT NULL, CHANGE minimal_amount minimal_amount INT UNSIGNED NOT NULL, CHANGE averageViews average_views BIGINT UNSIGNED NOT NULL');
  25.         $this->addSql('ALTER TABLE creator ADD CONSTRAINT FK_BC06EA63FF64B2BC FOREIGN KEY (tik_tok_auth_id) REFERENCES tik_tok_auth (id)');
  26.         $this->addSql('ALTER TABLE creator ADD CONSTRAINT FK_BC06EA63BF396750 FOREIGN KEY (id) REFERENCES user (id) ON DELETE CASCADE');
  27.         $this->addSql('CREATE UNIQUE INDEX UNIQ_BC06EA63FF64B2BC ON creator (tik_tok_auth_id)');
  28.         $this->addSql('UPDATE creator c INNER JOIN tiktok_auth ta ON ta.user_id = c.id SET c.tik_tok_auth_id = ta.id WHERE true = true;');
  29.         $this->addSql('UPDATE creator c INNER JOIN user u ON u.id = c.id SET c.username = u.username, c.gender = IFNULL(u.gender, :defaultGender), c.birthday = IFNULL(u.birthday, CURRENT_DATE()) WHERE true = true;', [
  30.             'defaultGender' => Gender::MALE,
  31.         ]);
  32.         $this->addSql('ALTER TABLE payment_account CHANGE is_connected connected TINYINT(1) NOT NULL');
  33.         $this->addSql('ALTER TABLE payment_balance CHANGE value value DOUBLE PRECISION NOT NULL');
  34.         $this->addSql('ALTER TABLE payment_history CHANGE type type VARCHAR(255) NOT NULL');
  35.         $this->addSql('ALTER TABLE song CHANGE file file VARCHAR(255) NOT NULL');
  36.         $this->addSql('ALTER TABLE sponsor DROP FOREIGN KEY FK_818CC9D4BF396750');
  37.         $this->addSql('ALTER TABLE sponsor ADD CONSTRAINT FK_818CC9D4BF396750 FOREIGN KEY (id) REFERENCES user (id) ON DELETE CASCADE');
  38.         $this->addSql('ALTER TABLE user CHANGE roles role VARCHAR(255) NOT NULL, DROP gender, DROP birthday, DROP username');
  39.         $this->addSql('DROP TABLE tiktok_auth');
  40.     }
  41.     public function down(Schema $schema): void
  42.     {
  43.         // this down() migration is auto-generated, please modify it to your needs
  44.         $this->addSql('ALTER TABLE creator DROP FOREIGN KEY FK_BC06EA63FF64B2BC');
  45.         $this->addSql('CREATE TABLE tiktok_auth (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', user_id BIGINT UNSIGNED DEFAULT NULL, access_token VARCHAR(255) CHARACTER SET utf8 NOT NULL COLLATE `utf8_unicode_ci`, refresh_token VARCHAR(255) CHARACTER SET utf8 NOT NULL COLLATE `utf8_unicode_ci`, access_token_expired_at DATETIME NOT NULL, refresh_token_expired_at DATETIME NOT NULL, UNIQUE INDEX UNIQ_82B6CBFEA76ED395 (user_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE `utf8_unicode_ci` ENGINE = InnoDB COMMENT = \'\' ');
  46.         $this->addSql('ALTER TABLE tiktok_auth ADD CONSTRAINT FK_82B6CBFEA76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON UPDATE NO ACTION ON DELETE NO ACTION');
  47.         $this->addSql('DROP TABLE administrator');
  48.         $this->addSql('DROP TABLE tik_tok_auth');
  49.         $this->addSql('ALTER TABLE creator DROP FOREIGN KEY FK_BC06EA63BF396750');
  50.         $this->addSql('DROP INDEX UNIQ_BC06EA63FF64B2BC ON creator');
  51.         $this->addSql('ALTER TABLE creator ADD is_phone_notify_campaigns TINYINT(1) NOT NULL, ADD is_email_notify_campaigns TINYINT(1) NOT NULL, ADD is_email_notify_newsletter TINYINT(1) NOT NULL, ADD updated_at DATETIME NOT NULL, ADD last_notifications JSON NOT NULL, DROP tik_tok_auth_id, DROP username, DROP gender, DROP birthday, DROP phone_notify_campaigns, DROP email_notify_campaigns, DROP email_notify_newsletter, CHANGE minimal_amount minimal_amount INT NOT NULL, CHANGE average_views averageViews BIGINT UNSIGNED NOT NULL');
  52.         $this->addSql('ALTER TABLE creator ADD CONSTRAINT FK_BC06EA63BF396750 FOREIGN KEY (id) REFERENCES user (id) ON UPDATE NO ACTION ON DELETE NO ACTION');
  53.         $this->addSql('ALTER TABLE payment_account CHANGE connected is_connected TINYINT(1) NOT NULL');
  54.         $this->addSql('ALTER TABLE payment_balance CHANGE value value DOUBLE PRECISION DEFAULT \'0\' NOT NULL');
  55.         $this->addSql('ALTER TABLE payment_history CHANGE type type SMALLINT NOT NULL');
  56.         $this->addSql('ALTER TABLE song CHANGE file file VARCHAR(255) DEFAULT NULL');
  57.         $this->addSql('ALTER TABLE sponsor DROP FOREIGN KEY FK_818CC9D4BF396750');
  58.         $this->addSql('ALTER TABLE sponsor ADD CONSTRAINT FK_818CC9D4BF396750 FOREIGN KEY (id) REFERENCES user (id) ON UPDATE NO ACTION ON DELETE NO ACTION');
  59.         $this->addSql('ALTER TABLE user ADD gender SMALLINT DEFAULT NULL, ADD birthday DATE DEFAULT NULL, ADD username VARCHAR(255) DEFAULT NULL, ADD roles LONGTEXT NOT NULL COMMENT \'(DC2Type:simple_array)\', DROP role');
  60.     }
  61.     public function isTransactional(): bool
  62.     {
  63.         return false;
  64.     }
  65. }