migrations/Version20230323145105.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations;
  4. use App\Entity\SiteSection;
  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 Version20230323145105 extends AbstractMigration
  11. {
  12.     const siteSections = [
  13.         [
  14.             'code' => SiteSection::SS_GTO,
  15.             'name' => 'ГТО в Татарстане',
  16.             'links' => [
  17.                 [
  18.                     'type' => 'feedback',
  19.                     'name' => 'Не нашли нужного ответа? Больше информации Вы найдете здесь',
  20.                     'url' => 'https://gto.ru/feedback',
  21.                 ],
  22.             ]
  23.         ],
  24.         [
  25.             'code' => SiteSection::SS_ADAPTIVE_SPORT,
  26.             'name' => 'Адаптивный спорт',
  27.         ],
  28.         [
  29.             'code' => SiteSection::SS_ABOUT,
  30.             'name' => 'О проекте',
  31.             'links' => [
  32.                 [
  33.                     'type' => 'feedback',
  34.                     'name' => 'Не нашли нужного ответа? Больше информации Вы найдете здесь',
  35.                     'url' => 'https://gto.ru/feedback',
  36.                 ],
  37.             ]
  38.         ],
  39.     ];
  40.     public function getDescription(): string
  41.     {
  42.         return '';
  43.     }
  44.     public function up(Schema $schema): void
  45.     {
  46.         // this up() migration is auto-generated, please modify it to your needs
  47.         $this->addSql('CREATE TABLE site_faq (id SERIAL NOT NULL, site_section_id INT DEFAULT NULL, created_by_id INT NOT NULL, removed_by_id INT DEFAULT NULL, question VARCHAR(255) NOT NULL, answer TEXT NOT NULL, sort INT DEFAULT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL, removed_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, PRIMARY KEY(id))');
  48.         $this->addSql('CREATE INDEX IDX_1C6244ECF82A6CBF ON site_faq (site_section_id)');
  49.         $this->addSql('CREATE INDEX IDX_1C6244ECB03A8386 ON site_faq (created_by_id)');
  50.         $this->addSql('CREATE INDEX IDX_1C6244EC2BD701DA ON site_faq (removed_by_id)');
  51.         $this->addSql('COMMENT ON TABLE site_faq IS \'Частые вопросы сайта (внешнего)\'');
  52.         $this->addSql('COMMENT ON COLUMN site_faq.question IS \'Вопрос\'');
  53.         $this->addSql('COMMENT ON COLUMN site_faq.answer IS \'Ответ\'');
  54.         $this->addSql('COMMENT ON COLUMN site_faq.sort IS \'Сортировка\'');
  55.         $this->addSql('COMMENT ON COLUMN site_faq.removed_at IS \'Когда удалено\'');
  56.         $this->addSql('CREATE TABLE site_section (id SERIAL NOT NULL, removed_by_id INT DEFAULT NULL, code VARCHAR(50) NOT NULL, name VARCHAR(255) NOT NULL, description TEXT DEFAULT NULL, removed_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, PRIMARY KEY(id))');
  57.         $this->addSql('CREATE UNIQUE INDEX UNIQ_D6D7982477153098 ON site_section (code)');
  58.         $this->addSql('CREATE INDEX IDX_D6D798242BD701DA ON site_section (removed_by_id)');
  59.         $this->addSql('COMMENT ON TABLE site_section IS \'Разделы сайта (внешнего)\'');
  60.         $this->addSql('COMMENT ON COLUMN site_section.code IS \'Кодовое наименование раздела\'');
  61.         $this->addSql('COMMENT ON COLUMN site_section.name IS \'Наименование раздела\'');
  62.         $this->addSql('COMMENT ON COLUMN site_section.description IS \'Текстовое описание раздела\'');
  63.         $this->addSql('COMMENT ON COLUMN site_section.removed_at IS \'Когда удалено\'');
  64.         $this->addSql('CREATE TABLE site_section_image (site_section_id INT NOT NULL, file_id INT NOT NULL, PRIMARY KEY(site_section_id, file_id))');
  65.         $this->addSql('CREATE INDEX IDX_C90B90F82A6CBF ON site_section_image (site_section_id)');
  66.         $this->addSql('CREATE INDEX IDX_C90B9093CB796C ON site_section_image (file_id)');
  67.         $this->addSql('CREATE TABLE site_section_banner (site_section_id INT NOT NULL, banner_id INT NOT NULL, PRIMARY KEY(site_section_id, banner_id))');
  68.         $this->addSql('CREATE INDEX IDX_648393C9F82A6CBF ON site_section_banner (site_section_id)');
  69.         $this->addSql('CREATE INDEX IDX_648393C9684EC833 ON site_section_banner (banner_id)');
  70.         $this->addSql('ALTER TABLE site_faq ADD CONSTRAINT FK_1C6244ECF82A6CBF FOREIGN KEY (site_section_id) REFERENCES site_section (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
  71.         $this->addSql('ALTER TABLE site_faq ADD CONSTRAINT FK_1C6244ECB03A8386 FOREIGN KEY (created_by_id) REFERENCES "user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
  72.         $this->addSql('ALTER TABLE site_faq ADD CONSTRAINT FK_1C6244EC2BD701DA FOREIGN KEY (removed_by_id) REFERENCES "user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
  73.         $this->addSql('ALTER TABLE site_section ADD CONSTRAINT FK_D6D798242BD701DA FOREIGN KEY (removed_by_id) REFERENCES "user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
  74.         $this->addSql('ALTER TABLE site_section_image ADD CONSTRAINT FK_C90B90F82A6CBF FOREIGN KEY (site_section_id) REFERENCES site_section (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
  75.         $this->addSql('ALTER TABLE site_section_image ADD CONSTRAINT FK_C90B9093CB796C FOREIGN KEY (file_id) REFERENCES file (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
  76.         $this->addSql('ALTER TABLE site_section_banner ADD CONSTRAINT FK_648393C9F82A6CBF FOREIGN KEY (site_section_id) REFERENCES site_section (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
  77.         $this->addSql('ALTER TABLE site_section_banner ADD CONSTRAINT FK_648393C9684EC833 FOREIGN KEY (banner_id) REFERENCES banner (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
  78.         $this->addSql('ALTER TABLE links ADD site_section_id INT DEFAULT NULL');
  79.         $this->addSql('ALTER TABLE links ADD CONSTRAINT FK_D182A118F82A6CBF FOREIGN KEY (site_section_id) REFERENCES site_section (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
  80.         $this->addSql('CREATE INDEX IDX_D182A118F82A6CBF ON links (site_section_id)');
  81.         $id 1;
  82.         foreach (self::siteSections as $siteSection) {
  83.             $this->addSql(sprintf('INSERT INTO site_section (code, name) VALUES (\'%s\', \'%s\')',
  84.                 $siteSection['code'], $siteSection['name']
  85.             ));
  86.             if (isset($siteSection['links'])) {
  87.                 foreach ($siteSection['links'] as $link) {
  88.                     $this->addSql(sprintf('INSERT INTO links (created_by_id, type, name, url, site_section_id) VALUES (1, \'%s\', \'%s\', \'%s\', %d)',
  89.                         $link['type'], $link['name'], $link['url'], $id
  90.                     ));
  91.                 }
  92.             }
  93.             $id++;
  94.         }
  95.     }
  96.     public function down(Schema $schema): void
  97.     {
  98.         // this down() migration is auto-generated, please modify it to your needs
  99.         $this->addSql('ALTER TABLE links DROP CONSTRAINT FK_D182A118F82A6CBF');
  100.         $this->addSql('ALTER TABLE site_faq DROP CONSTRAINT FK_1C6244ECF82A6CBF');
  101.         $this->addSql('ALTER TABLE site_faq DROP CONSTRAINT FK_1C6244ECB03A8386');
  102.         $this->addSql('ALTER TABLE site_faq DROP CONSTRAINT FK_1C6244EC2BD701DA');
  103.         $this->addSql('ALTER TABLE site_section DROP CONSTRAINT FK_D6D798242BD701DA');
  104.         $this->addSql('ALTER TABLE site_section_image DROP CONSTRAINT FK_C90B90F82A6CBF');
  105.         $this->addSql('ALTER TABLE site_section_image DROP CONSTRAINT FK_C90B9093CB796C');
  106.         $this->addSql('ALTER TABLE site_section_banner DROP CONSTRAINT FK_648393C9F82A6CBF');
  107.         $this->addSql('ALTER TABLE site_section_banner DROP CONSTRAINT FK_648393C9684EC833');
  108.         $this->addSql('DROP TABLE site_faq');
  109.         $this->addSql('DROP TABLE site_section');
  110.         $this->addSql('DROP TABLE site_section_image');
  111.         $this->addSql('DROP TABLE site_section_banner');
  112.         $this->addSql('DROP INDEX IDX_D182A118F82A6CBF');
  113.         $this->addSql('ALTER TABLE links DROP site_section_id');
  114.     }
  115. }