<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use App\Contracts\User\Gender;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20220404163143 extends AbstractMigration
{
public function getDescription(): string
{
return '';
}
public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('CREATE TABLE administrator (id BIGINT UNSIGNED NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE `utf8_unicode_ci` ENGINE = InnoDB');
$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');
$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');
$this->addSql('ALTER TABLE administrator ADD CONSTRAINT FK_58DF0651BF396750 FOREIGN KEY (id) REFERENCES user (id) ON DELETE CASCADE');
$this->addSql('ALTER TABLE creator DROP FOREIGN KEY FK_BC06EA63BF396750');
$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');
$this->addSql('ALTER TABLE creator ADD CONSTRAINT FK_BC06EA63FF64B2BC FOREIGN KEY (tik_tok_auth_id) REFERENCES tik_tok_auth (id)');
$this->addSql('ALTER TABLE creator ADD CONSTRAINT FK_BC06EA63BF396750 FOREIGN KEY (id) REFERENCES user (id) ON DELETE CASCADE');
$this->addSql('CREATE UNIQUE INDEX UNIQ_BC06EA63FF64B2BC ON creator (tik_tok_auth_id)');
$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;');
$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;', [
'defaultGender' => Gender::MALE,
]);
$this->addSql('ALTER TABLE payment_account CHANGE is_connected connected TINYINT(1) NOT NULL');
$this->addSql('ALTER TABLE payment_balance CHANGE value value DOUBLE PRECISION NOT NULL');
$this->addSql('ALTER TABLE payment_history CHANGE type type VARCHAR(255) NOT NULL');
$this->addSql('ALTER TABLE song CHANGE file file VARCHAR(255) NOT NULL');
$this->addSql('ALTER TABLE sponsor DROP FOREIGN KEY FK_818CC9D4BF396750');
$this->addSql('ALTER TABLE sponsor ADD CONSTRAINT FK_818CC9D4BF396750 FOREIGN KEY (id) REFERENCES user (id) ON DELETE CASCADE');
$this->addSql('ALTER TABLE user CHANGE roles role VARCHAR(255) NOT NULL, DROP gender, DROP birthday, DROP username');
$this->addSql('DROP TABLE tiktok_auth');
}
public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE creator DROP FOREIGN KEY FK_BC06EA63FF64B2BC');
$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 = \'\' ');
$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');
$this->addSql('DROP TABLE administrator');
$this->addSql('DROP TABLE tik_tok_auth');
$this->addSql('ALTER TABLE creator DROP FOREIGN KEY FK_BC06EA63BF396750');
$this->addSql('DROP INDEX UNIQ_BC06EA63FF64B2BC ON creator');
$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');
$this->addSql('ALTER TABLE creator ADD CONSTRAINT FK_BC06EA63BF396750 FOREIGN KEY (id) REFERENCES user (id) ON UPDATE NO ACTION ON DELETE NO ACTION');
$this->addSql('ALTER TABLE payment_account CHANGE connected is_connected TINYINT(1) NOT NULL');
$this->addSql('ALTER TABLE payment_balance CHANGE value value DOUBLE PRECISION DEFAULT \'0\' NOT NULL');
$this->addSql('ALTER TABLE payment_history CHANGE type type SMALLINT NOT NULL');
$this->addSql('ALTER TABLE song CHANGE file file VARCHAR(255) DEFAULT NULL');
$this->addSql('ALTER TABLE sponsor DROP FOREIGN KEY FK_818CC9D4BF396750');
$this->addSql('ALTER TABLE sponsor ADD CONSTRAINT FK_818CC9D4BF396750 FOREIGN KEY (id) REFERENCES user (id) ON UPDATE NO ACTION ON DELETE NO ACTION');
$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');
}
public function isTransactional(): bool
{
return false;
}
}