350 lines
14 KiB
PHP
350 lines
14 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace DoctrineMigrations;
|
|
|
|
use Doctrine\DBAL\Schema\Schema;
|
|
use Doctrine\Migrations\AbstractMigration;
|
|
|
|
/**
|
|
* Auto-generated Migration: Please modify to your needs!
|
|
*/
|
|
final class Version20250905043249 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 answer (
|
|
id INT AUTO_INCREMENT NOT NULL,
|
|
question_id INT NOT NULL,
|
|
author_id INT NOT NULL,
|
|
content LONGTEXT NOT NULL,
|
|
created_at DATETIME NOT NULL,
|
|
updated_at DATETIME DEFAULT NULL,
|
|
is_accepted TINYINT(1) NOT NULL,
|
|
votes INT NOT NULL,
|
|
is_active TINYINT(1) NOT NULL,
|
|
INDEX IDX_DADD4A251E27F6BF (question_id),
|
|
INDEX IDX_DADD4A25F675F31B (author_id),
|
|
PRIMARY KEY(id)
|
|
) DEFAULT CHARACTER
|
|
SET
|
|
utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
|
|
$this->addSql('CREATE TABLE answer_vote (
|
|
id INT AUTO_INCREMENT NOT NULL,
|
|
answer_id INT NOT NULL,
|
|
user_id INT NOT NULL,
|
|
is_upvote TINYINT(1) NOT NULL,
|
|
created_at DATETIME NOT NULL,
|
|
INDEX IDX_43B66A4AA334807 (answer_id),
|
|
INDEX IDX_43B66A4A76ED395 (user_id),
|
|
UNIQUE INDEX unique_answer_user_vote (answer_id, user_id),
|
|
PRIMARY KEY(id)
|
|
) DEFAULT CHARACTER
|
|
SET
|
|
utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
|
|
$this->addSql('CREATE TABLE cat (
|
|
id INT AUTO_INCREMENT NOT NULL,
|
|
label VARCHAR(255) NOT NULL,
|
|
code VARCHAR(255) NOT NULL,
|
|
PRIMARY KEY(id)
|
|
) DEFAULT CHARACTER
|
|
SET
|
|
utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
|
|
$this->addSql('CREATE TABLE comment (
|
|
id INT AUTO_INCREMENT NOT NULL,
|
|
post_id INT NOT NULL,
|
|
body LONGTEXT NOT NULL,
|
|
name VARCHAR(255) DEFAULT NULL,
|
|
email VARCHAR(255) DEFAULT NULL,
|
|
website VARCHAR(255) DEFAULT NULL,
|
|
date_submit VARCHAR(255) NOT NULL,
|
|
publish TINYINT(1) DEFAULT NULL,
|
|
INDEX IDX_9474526C4B89032C (post_id),
|
|
PRIMARY KEY(id)
|
|
) DEFAULT CHARACTER
|
|
SET
|
|
utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
|
|
$this->addSql('CREATE TABLE customer (
|
|
id INT AUTO_INCREMENT NOT NULL,
|
|
email VARCHAR(180) NOT NULL,
|
|
roles JSON NOT NULL,
|
|
password VARCHAR(255) NOT NULL,
|
|
name VARCHAR(255) NOT NULL,
|
|
phone VARCHAR(20) NOT NULL,
|
|
is_active TINYINT(1) NOT NULL,
|
|
email_verified_at DATETIME DEFAULT NULL,
|
|
created_at DATETIME NOT NULL,
|
|
updated_at DATETIME DEFAULT NULL,
|
|
last_login_at DATETIME DEFAULT NULL,
|
|
subscription_type VARCHAR(50) DEFAULT NULL,
|
|
subscription_expires_at DATETIME DEFAULT NULL,
|
|
UNIQUE INDEX UNIQ_CUSTOMER_EMAIL (email),
|
|
PRIMARY KEY(id)
|
|
) DEFAULT CHARACTER
|
|
SET
|
|
utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
|
|
$this->addSql('CREATE TABLE hsxorder (
|
|
id INT AUTO_INCREMENT NOT NULL,
|
|
PRIMARY KEY(id)
|
|
) DEFAULT CHARACTER
|
|
SET
|
|
utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
|
|
$this->addSql('CREATE TABLE password_reset_token (
|
|
id INT AUTO_INCREMENT NOT NULL,
|
|
user_id INT NOT NULL,
|
|
token VARCHAR(255) NOT NULL,
|
|
expires_at DATETIME NOT NULL,
|
|
used_at DATETIME DEFAULT NULL,
|
|
created_at DATETIME NOT NULL,
|
|
INDEX IDX_6B7BA4B6A76ED395 (user_id),
|
|
PRIMARY KEY(id)
|
|
) DEFAULT CHARACTER
|
|
SET
|
|
utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
|
|
$this->addSql('CREATE TABLE post (
|
|
id INT AUTO_INCREMENT NOT NULL,
|
|
submitter_id INT DEFAULT NULL,
|
|
cat_id INT DEFAULT NULL,
|
|
title VARCHAR(255) DEFAULT NULL,
|
|
body LONGTEXT DEFAULT NULL,
|
|
date_submit VARCHAR(50) NOT NULL,
|
|
publish TINYINT(1) DEFAULT NULL,
|
|
url VARCHAR(255) DEFAULT NULL,
|
|
main_pic VARCHAR(255) DEFAULT NULL,
|
|
plain LONGTEXT DEFAULT NULL,
|
|
version VARCHAR(255) DEFAULT NULL,
|
|
keywords LONGTEXT DEFAULT NULL,
|
|
sort VARCHAR(255) DEFAULT NULL,
|
|
intro LONGTEXT DEFAULT NULL,
|
|
views VARCHAR(255) DEFAULT NULL,
|
|
UNIQUE INDEX UNIQ_5A8A6C8DF47645AE (url),
|
|
INDEX IDX_5A8A6C8D919E5513 (submitter_id),
|
|
INDEX IDX_5A8A6C8DE6ADA943 (cat_id),
|
|
PRIMARY KEY(id)
|
|
) DEFAULT CHARACTER
|
|
SET
|
|
utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
|
|
$this->addSql('CREATE TABLE post_tree (
|
|
post_id INT NOT NULL,
|
|
tree_id INT NOT NULL,
|
|
INDEX IDX_7E6B39D74B89032C (post_id),
|
|
INDEX IDX_7E6B39D778B64A2 (tree_id),
|
|
PRIMARY KEY(post_id, tree_id)
|
|
) DEFAULT CHARACTER
|
|
SET
|
|
utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
|
|
$this->addSql('CREATE TABLE question (
|
|
id INT AUTO_INCREMENT NOT NULL,
|
|
author_id INT NOT NULL,
|
|
title VARCHAR(255) NOT NULL,
|
|
content LONGTEXT NOT NULL,
|
|
created_at DATETIME NOT NULL,
|
|
updated_at DATETIME DEFAULT NULL,
|
|
is_solved TINYINT(1) NOT NULL,
|
|
views INT NOT NULL,
|
|
votes INT NOT NULL,
|
|
is_active TINYINT(1) NOT NULL,
|
|
INDEX IDX_B6F7494EF675F31B (author_id),
|
|
PRIMARY KEY(id)
|
|
) DEFAULT CHARACTER
|
|
SET
|
|
utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
|
|
$this->addSql('CREATE TABLE question_tag (
|
|
id INT AUTO_INCREMENT NOT NULL,
|
|
name VARCHAR(50) NOT NULL,
|
|
description VARCHAR(255) DEFAULT NULL,
|
|
color VARCHAR(7) DEFAULT NULL,
|
|
usage_count INT NOT NULL,
|
|
is_active TINYINT(1) NOT NULL,
|
|
UNIQUE INDEX UNIQ_339D56FB5E237E06 (name),
|
|
PRIMARY KEY(id)
|
|
) DEFAULT CHARACTER
|
|
SET
|
|
utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
|
|
$this->addSql('CREATE TABLE question_tag_relation (
|
|
id INT AUTO_INCREMENT NOT NULL,
|
|
question_id INT NOT NULL,
|
|
tag_id INT NOT NULL,
|
|
INDEX IDX_C752C7D01E27F6BF (question_id),
|
|
INDEX IDX_C752C7D0BAD26311 (tag_id),
|
|
UNIQUE INDEX unique_question_tag (question_id, tag_id),
|
|
PRIMARY KEY(id)
|
|
) DEFAULT CHARACTER
|
|
SET
|
|
utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
|
|
$this->addSql('CREATE TABLE question_vote (
|
|
id INT AUTO_INCREMENT NOT NULL,
|
|
question_id INT NOT NULL,
|
|
user_id INT NOT NULL,
|
|
is_upvote TINYINT(1) NOT NULL,
|
|
created_at DATETIME NOT NULL,
|
|
INDEX IDX_4FE688B1E27F6BF (question_id),
|
|
INDEX IDX_4FE688BA76ED395 (user_id),
|
|
UNIQUE INDEX unique_question_user_vote (question_id, user_id),
|
|
PRIMARY KEY(id)
|
|
) DEFAULT CHARACTER
|
|
SET
|
|
utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
|
|
$this->addSql('CREATE TABLE settings (
|
|
id INT AUTO_INCREMENT NOT NULL,
|
|
des VARCHAR(255) DEFAULT NULL,
|
|
site_keywords LONGTEXT DEFAULT NULL,
|
|
bscscan_api VARCHAR(255) DEFAULT NULL,
|
|
bsc_priv VARCHAR(255) DEFAULT NULL,
|
|
bsc_pub VARCHAR(255) DEFAULT NULL,
|
|
zarinpal_chain VARCHAR(255) DEFAULT NULL,
|
|
PRIMARY KEY(id)
|
|
) DEFAULT CHARACTER
|
|
SET
|
|
utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
|
|
$this->addSql('CREATE TABLE tree (
|
|
id INT AUTO_INCREMENT NOT NULL,
|
|
cat_id INT NOT NULL,
|
|
label VARCHAR(255) NOT NULL,
|
|
code VARCHAR(255) NOT NULL,
|
|
sort VARCHAR(50) DEFAULT NULL,
|
|
INDEX IDX_B73E5EDCE6ADA943 (cat_id),
|
|
PRIMARY KEY(id)
|
|
) DEFAULT CHARACTER
|
|
SET
|
|
utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
|
|
$this->addSql('CREATE TABLE `user` (
|
|
id INT AUTO_INCREMENT NOT NULL,
|
|
email VARCHAR(180) NOT NULL,
|
|
roles JSON NOT NULL,
|
|
password VARCHAR(255) NOT NULL,
|
|
name VARCHAR(255) NOT NULL,
|
|
phone VARCHAR(20) DEFAULT NULL,
|
|
is_active TINYINT(1) NOT NULL,
|
|
email_verified_at DATETIME DEFAULT NULL,
|
|
created_at DATETIME NOT NULL,
|
|
updated_at DATETIME DEFAULT NULL,
|
|
last_login_at DATETIME DEFAULT NULL,
|
|
subscription_type VARCHAR(50) DEFAULT NULL,
|
|
subscription_expires_at DATETIME DEFAULT NULL,
|
|
UNIQUE INDEX UNIQ_IDENTIFIER_EMAIL (email),
|
|
PRIMARY KEY(id)
|
|
) DEFAULT CHARACTER
|
|
SET
|
|
utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
|
|
$this->addSql('CREATE TABLE messenger_messages (
|
|
id BIGINT AUTO_INCREMENT NOT NULL,
|
|
body LONGTEXT NOT NULL,
|
|
headers LONGTEXT NOT NULL,
|
|
queue_name VARCHAR(190) NOT NULL,
|
|
created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\',
|
|
available_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\',
|
|
delivered_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\',
|
|
INDEX IDX_75EA56E0FB7336F0 (queue_name),
|
|
INDEX IDX_75EA56E0E3BD61CE (available_at),
|
|
INDEX IDX_75EA56E016BA31DB (delivered_at),
|
|
PRIMARY KEY(id)
|
|
) DEFAULT CHARACTER
|
|
SET
|
|
utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
|
|
$this->addSql('ALTER TABLE
|
|
answer
|
|
ADD
|
|
CONSTRAINT FK_DADD4A251E27F6BF FOREIGN KEY (question_id) REFERENCES question (id)');
|
|
$this->addSql('ALTER TABLE
|
|
answer
|
|
ADD
|
|
CONSTRAINT FK_DADD4A25F675F31B FOREIGN KEY (author_id) REFERENCES `user` (id)');
|
|
$this->addSql('ALTER TABLE
|
|
answer_vote
|
|
ADD
|
|
CONSTRAINT FK_43B66A4AA334807 FOREIGN KEY (answer_id) REFERENCES answer (id)');
|
|
$this->addSql('ALTER TABLE
|
|
answer_vote
|
|
ADD
|
|
CONSTRAINT FK_43B66A4A76ED395 FOREIGN KEY (user_id) REFERENCES `user` (id)');
|
|
$this->addSql('ALTER TABLE
|
|
comment
|
|
ADD
|
|
CONSTRAINT FK_9474526C4B89032C FOREIGN KEY (post_id) REFERENCES post (id)');
|
|
$this->addSql('ALTER TABLE
|
|
password_reset_token
|
|
ADD
|
|
CONSTRAINT FK_6B7BA4B6A76ED395 FOREIGN KEY (user_id) REFERENCES `user` (id)');
|
|
$this->addSql('ALTER TABLE
|
|
post
|
|
ADD
|
|
CONSTRAINT FK_5A8A6C8D919E5513 FOREIGN KEY (submitter_id) REFERENCES `user` (id)');
|
|
$this->addSql('ALTER TABLE post ADD CONSTRAINT FK_5A8A6C8DE6ADA943 FOREIGN KEY (cat_id) REFERENCES cat (id)');
|
|
$this->addSql('ALTER TABLE
|
|
post_tree
|
|
ADD
|
|
CONSTRAINT FK_7E6B39D74B89032C FOREIGN KEY (post_id) REFERENCES post (id) ON DELETE CASCADE');
|
|
$this->addSql('ALTER TABLE
|
|
post_tree
|
|
ADD
|
|
CONSTRAINT FK_7E6B39D778B64A2 FOREIGN KEY (tree_id) REFERENCES tree (id) ON DELETE CASCADE');
|
|
$this->addSql('ALTER TABLE
|
|
question
|
|
ADD
|
|
CONSTRAINT FK_B6F7494EF675F31B FOREIGN KEY (author_id) REFERENCES `user` (id)');
|
|
$this->addSql('ALTER TABLE
|
|
question_tag_relation
|
|
ADD
|
|
CONSTRAINT FK_C752C7D01E27F6BF FOREIGN KEY (question_id) REFERENCES question (id)');
|
|
$this->addSql('ALTER TABLE
|
|
question_tag_relation
|
|
ADD
|
|
CONSTRAINT FK_C752C7D0BAD26311 FOREIGN KEY (tag_id) REFERENCES question_tag (id)');
|
|
$this->addSql('ALTER TABLE
|
|
question_vote
|
|
ADD
|
|
CONSTRAINT FK_4FE688B1E27F6BF FOREIGN KEY (question_id) REFERENCES question (id)');
|
|
$this->addSql('ALTER TABLE
|
|
question_vote
|
|
ADD
|
|
CONSTRAINT FK_4FE688BA76ED395 FOREIGN KEY (user_id) REFERENCES `user` (id)');
|
|
$this->addSql('ALTER TABLE tree ADD CONSTRAINT FK_B73E5EDCE6ADA943 FOREIGN KEY (cat_id) REFERENCES cat (id)');
|
|
}
|
|
|
|
public function down(Schema $schema): void
|
|
{
|
|
// this down() migration is auto-generated, please modify it to your needs
|
|
$this->addSql('ALTER TABLE answer DROP FOREIGN KEY FK_DADD4A251E27F6BF');
|
|
$this->addSql('ALTER TABLE answer DROP FOREIGN KEY FK_DADD4A25F675F31B');
|
|
$this->addSql('ALTER TABLE answer_vote DROP FOREIGN KEY FK_43B66A4AA334807');
|
|
$this->addSql('ALTER TABLE answer_vote DROP FOREIGN KEY FK_43B66A4A76ED395');
|
|
$this->addSql('ALTER TABLE comment DROP FOREIGN KEY FK_9474526C4B89032C');
|
|
$this->addSql('ALTER TABLE password_reset_token DROP FOREIGN KEY FK_6B7BA4B6A76ED395');
|
|
$this->addSql('ALTER TABLE post DROP FOREIGN KEY FK_5A8A6C8D919E5513');
|
|
$this->addSql('ALTER TABLE post DROP FOREIGN KEY FK_5A8A6C8DE6ADA943');
|
|
$this->addSql('ALTER TABLE post_tree DROP FOREIGN KEY FK_7E6B39D74B89032C');
|
|
$this->addSql('ALTER TABLE post_tree DROP FOREIGN KEY FK_7E6B39D778B64A2');
|
|
$this->addSql('ALTER TABLE question DROP FOREIGN KEY FK_B6F7494EF675F31B');
|
|
$this->addSql('ALTER TABLE question_tag_relation DROP FOREIGN KEY FK_C752C7D01E27F6BF');
|
|
$this->addSql('ALTER TABLE question_tag_relation DROP FOREIGN KEY FK_C752C7D0BAD26311');
|
|
$this->addSql('ALTER TABLE question_vote DROP FOREIGN KEY FK_4FE688B1E27F6BF');
|
|
$this->addSql('ALTER TABLE question_vote DROP FOREIGN KEY FK_4FE688BA76ED395');
|
|
$this->addSql('ALTER TABLE tree DROP FOREIGN KEY FK_B73E5EDCE6ADA943');
|
|
$this->addSql('DROP TABLE answer');
|
|
$this->addSql('DROP TABLE answer_vote');
|
|
$this->addSql('DROP TABLE cat');
|
|
$this->addSql('DROP TABLE comment');
|
|
$this->addSql('DROP TABLE customer');
|
|
$this->addSql('DROP TABLE hsxorder');
|
|
$this->addSql('DROP TABLE password_reset_token');
|
|
$this->addSql('DROP TABLE post');
|
|
$this->addSql('DROP TABLE post_tree');
|
|
$this->addSql('DROP TABLE question');
|
|
$this->addSql('DROP TABLE question_tag');
|
|
$this->addSql('DROP TABLE question_tag_relation');
|
|
$this->addSql('DROP TABLE question_vote');
|
|
$this->addSql('DROP TABLE settings');
|
|
$this->addSql('DROP TABLE tree');
|
|
$this->addSql('DROP TABLE `user`');
|
|
$this->addSql('DROP TABLE messenger_messages');
|
|
}
|
|
}
|