vendor/plna-penezenka/pp-sdk-bundle/migrations/Version20220216131943_PPSDK117_WebVariants.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace PPSDKDoctrineMigrations;
  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 Version20220216131943_PPSDK117_WebVariants extends AbstractMigration
  10. {
  11.     public function getDescription(): string
  12.     {
  13.         return 'Migrates related entities from WebHomepage to WebVariant';
  14.     }
  15.     public function up(Schema $schema): void
  16.     {
  17.         // Drop reference to webs_homepages
  18.         $this->addSql('ALTER TABLE banner_positions DROP FOREIGN KEY FK_74FAADC0571EDDA');
  19.         // Create webs_variants and related tables
  20.         $this->addSql('CREATE TABLE webs_variants (id INT AUTO_INCREMENT NOT NULL, web_id INT NOT NULL, business_partner_id INT DEFAULT NULL, created_by_admin_id INT DEFAULT NULL, updated_by_admin_id INT DEFAULT NULL, deleted_by_admin_id INT DEFAULT NULL, url_slug VARCHAR(255) NOT NULL, is_default TINYINT(1) DEFAULT 1 NOT NULL, shops_count INT NOT NULL, promotions_count INT NOT NULL, remember_on_registration TINYINT(1) NOT NULL, homepage_bullets LONGTEXT NOT NULL COMMENT \'(DC2Type:json)\', h1_title VARCHAR(255) NOT NULL, created_when DATETIME NOT NULL, updated_when DATETIME NOT NULL, deleted TINYINT(1) NOT NULL, not_deleted TINYINT(1) DEFAULT NULL, deleted_when DATETIME DEFAULT NULL, name VARCHAR(255) NOT NULL, identifier VARCHAR(40) NOT NULL, logo_attached TINYINT(1) NOT NULL, logo_attached_when DATETIME DEFAULT NULL, logo_url VARCHAR(255) NOT NULL, logo_storage_path VARCHAR(255) NOT NULL, logo_file_size INT NOT NULL, logo_mime_type VARCHAR(40) NOT NULL, logo_width INT NOT NULL, logo_height INT NOT NULL, logo_alt VARCHAR(255) DEFAULT \'\' NOT NULL, small_logo_attached TINYINT(1) NOT NULL, small_logo_attached_when DATETIME DEFAULT NULL, small_logo_url VARCHAR(255) NOT NULL, small_logo_storage_path VARCHAR(255) NOT NULL, small_logo_file_size INT NOT NULL, small_logo_mime_type VARCHAR(40) NOT NULL, small_logo_width INT NOT NULL, small_logo_height INT NOT NULL, small_logo_alt VARCHAR(255) DEFAULT \'\' NOT NULL, seo_meta_title VARCHAR(255) NOT NULL, seo_meta_robots VARCHAR(255) NOT NULL, seo_meta_description LONGTEXT NOT NULL, seo_meta_keywords LONGTEXT NOT NULL, seo_canonical VARCHAR(255) NOT NULL, seo_sitemap_change_frequency VARCHAR(20) DEFAULT \'daily\' NOT NULL, og_title VARCHAR(255) NOT NULL, og_description VARCHAR(255) NOT NULL, og_image_attached TINYINT(1) NOT NULL, og_image_attached_when DATETIME DEFAULT NULL, og_image_url VARCHAR(255) NOT NULL, og_image_storage_path VARCHAR(255) NOT NULL, og_image_file_size INT NOT NULL, og_image_mime_type VARCHAR(40) NOT NULL, og_image_width INT NOT NULL, og_image_height INT NOT NULL, og_image_alt VARCHAR(255) DEFAULT \'\' NOT NULL, twitter_card VARCHAR(255) NOT NULL, twitter_title VARCHAR(255) NOT NULL, twitter_description VARCHAR(255) NOT NULL, twitter_image_attached TINYINT(1) NOT NULL, twitter_image_attached_when DATETIME DEFAULT NULL, twitter_image_url VARCHAR(255) NOT NULL, twitter_image_storage_path VARCHAR(255) NOT NULL, twitter_image_file_size INT NOT NULL, twitter_image_mime_type VARCHAR(40) NOT NULL, twitter_image_width INT NOT NULL, twitter_image_height INT NOT NULL, twitter_image_alt VARCHAR(255) DEFAULT \'\' NOT NULL, INDEX IDX_1695340BFE18474D (web_id), INDEX IDX_1695340B5330F055 (business_partner_id), INDEX IDX_1695340B64F1F4EE (created_by_admin_id), INDEX IDX_1695340B681D6437 (updated_by_admin_id), INDEX IDX_1695340B54C5E183 (deleted_by_admin_id), INDEX is_default (web_id, is_default), UNIQUE INDEX identifier (identifier, not_deleted), UNIQUE INDEX url_slug (web_id, url_slug, not_deleted), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  21.         $this->addSql('CREATE TABLE webs_variants_banner_positions (web_variant_id INT NOT NULL, banner_position_id INT NOT NULL, INDEX IDX_EA8A63AFBA0913A3 (web_variant_id), INDEX IDX_EA8A63AFEDF3A435 (banner_position_id), PRIMARY KEY(web_variant_id, banner_position_id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  22.         $this->addSql('CREATE TABLE webs_variants_homepage_faq_items (id INT AUTO_INCREMENT NOT NULL, web_variant_id INT NOT NULL, faq_item_id INT NOT NULL, listing_order INT NOT NULL, INDEX IDX_52720A93BA0913A3 (web_variant_id), INDEX IDX_52720A9391E3905 (faq_item_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  23.         $this->addSql('CREATE TABLE webs_variants_homepage_promotions (id INT AUTO_INCREMENT NOT NULL, web_variant_id INT NOT NULL, promotion_id INT NOT NULL, listing_order INT NOT NULL, INDEX IDX_FB0D8351BA0913A3 (web_variant_id), INDEX IDX_FB0D8351139DF194 (promotion_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  24.         $this->addSql('CREATE TABLE webs_variants_homepage_shops (id INT AUTO_INCREMENT NOT NULL, web_variant_id INT NOT NULL, shop_id INT NOT NULL, listing_order INT NOT NULL, INDEX IDX_2C230810BA0913A3 (web_variant_id), INDEX IDX_2C2308104D16C4DD (shop_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  25.         $this->addSql('ALTER TABLE webs_variants ADD CONSTRAINT FK_1695340BFE18474D FOREIGN KEY (web_id) REFERENCES webs (id)');
  26.         $this->addSql('ALTER TABLE webs_variants ADD CONSTRAINT FK_1695340B5330F055 FOREIGN KEY (business_partner_id) REFERENCES business_partners (id)');
  27.         $this->addSql('ALTER TABLE webs_variants ADD CONSTRAINT FK_1695340B64F1F4EE FOREIGN KEY (created_by_admin_id) REFERENCES administrators (id)');
  28.         $this->addSql('ALTER TABLE webs_variants ADD CONSTRAINT FK_1695340B681D6437 FOREIGN KEY (updated_by_admin_id) REFERENCES administrators (id)');
  29.         $this->addSql('ALTER TABLE webs_variants ADD CONSTRAINT FK_1695340B54C5E183 FOREIGN KEY (deleted_by_admin_id) REFERENCES administrators (id)');
  30.         $this->addSql('ALTER TABLE webs_variants_banner_positions ADD CONSTRAINT FK_EA8A63AFBA0913A3 FOREIGN KEY (web_variant_id) REFERENCES webs_variants (id)');
  31.         $this->addSql('ALTER TABLE webs_variants_banner_positions ADD CONSTRAINT FK_EA8A63AFEDF3A435 FOREIGN KEY (banner_position_id) REFERENCES banner_positions (id)');
  32.         $this->addSql('ALTER TABLE webs_variants_homepage_faq_items ADD CONSTRAINT FK_52720A93BA0913A3 FOREIGN KEY (web_variant_id) REFERENCES webs_variants (id)');
  33.         $this->addSql('ALTER TABLE webs_variants_homepage_faq_items ADD CONSTRAINT FK_52720A9391E3905 FOREIGN KEY (faq_item_id) REFERENCES faq_items (id)');
  34.         $this->addSql('ALTER TABLE webs_variants_homepage_promotions ADD CONSTRAINT FK_FB0D8351BA0913A3 FOREIGN KEY (web_variant_id) REFERENCES webs_variants (id)');
  35.         $this->addSql('ALTER TABLE webs_variants_homepage_promotions ADD CONSTRAINT FK_FB0D8351139DF194 FOREIGN KEY (promotion_id) REFERENCES promotions (id)');
  36.         $this->addSql('ALTER TABLE webs_variants_homepage_shops ADD CONSTRAINT FK_2C230810BA0913A3 FOREIGN KEY (web_variant_id) REFERENCES webs_variants (id)');
  37.         $this->addSql('ALTER TABLE webs_variants_homepage_shops ADD CONSTRAINT FK_2C2308104D16C4DD FOREIGN KEY (shop_id) REFERENCES shops (id)');
  38.         // Migrate data from webs_homepages
  39.         $this->addSql("
  40.             INSERT INTO webs_variants 
  41.                 (id, web_id, business_partner_id, created_by_admin_id, updated_by_admin_id,
  42.                    deleted_by_admin_id, url_slug, is_default, shops_count, promotions_count,
  43.                    remember_on_registration, h1_title, homepage_bullets, created_when, updated_when, deleted, not_deleted,
  44.                    deleted_when, name, identifier, logo_attached, logo_attached_when, logo_url,
  45.                    logo_storage_path, logo_file_size, logo_mime_type, logo_width, logo_height, logo_alt,
  46.                    small_logo_attached, small_logo_attached_when, small_logo_url, small_logo_storage_path,
  47.                    small_logo_file_size, small_logo_mime_type, small_logo_width, small_logo_height,
  48.                    small_logo_alt, seo_meta_title, seo_meta_robots, seo_meta_description, seo_meta_keywords,
  49.                    seo_canonical, seo_sitemap_change_frequency, og_title, og_description, og_image_attached,
  50.                    og_image_attached_when, og_image_url, og_image_storage_path, og_image_file_size,
  51.                    og_image_mime_type, og_image_width, og_image_height, og_image_alt, twitter_card,
  52.                    twitter_title, twitter_description, twitter_image_attached, twitter_image_attached_when,
  53.                    twitter_image_url, twitter_image_storage_path, twitter_image_file_size,
  54.                    twitter_image_mime_type, twitter_image_width, twitter_image_height, twitter_image_alt)
  55.             SELECT
  56.                 id, web_id, business_partner_id, created_by_admin_id, updated_by_admin_id,
  57.                 deleted_by_admin_id, '_default_', 1, shops_count, promotions_count,
  58.                 0, h1_title, '[]', created_when, updated_when, deleted, not_deleted,
  59.                 deleted_when, (SELECT name FROM webs WHERE id = web_id), (SELECT identifier FROM webs WHERE id = web_id), logo_attached, logo_attached_when, logo_url,
  60.                 logo_storage_path, logo_file_size, logo_mime_type, logo_width, logo_height, logo_alt,
  61.                 small_logo_attached, small_logo_attached_when, small_logo_url, small_logo_storage_path,
  62.                 small_logo_file_size, small_logo_mime_type, small_logo_width, small_logo_height,
  63.                 small_logo_alt, seo_meta_title, seo_meta_robots, seo_meta_description, seo_meta_keywords,
  64.                 seo_canonical, seo_sitemap_change_frequency, og_title, og_description, og_image_attached,
  65.                 og_image_attached_when, og_image_url, og_image_storage_path, og_image_file_size,
  66.                 og_image_mime_type, og_image_width, og_image_height, og_image_alt, twitter_card,
  67.                 twitter_title, twitter_description, twitter_image_attached, twitter_image_attached_when,
  68.                 twitter_image_url, twitter_image_storage_path, twitter_image_file_size,
  69.                 twitter_image_mime_type, twitter_image_width, twitter_image_height, twitter_image_alt
  70.             FROM webs_homepages;
  71.         ");
  72.         $this->addSql(<<<SQL
  73.             UPDATE webs_variants
  74.             SET homepage_bullets = '["Peníze získáte zpět formou cashbacku","Největší cashback portál v České republice","Neplatíte žádné poplatky!"]'
  75.             WHERE id=1;
  76.         SQL);
  77.         $this->addSql(<<<SQL
  78.             UPDATE webs_variants
  79.             SET homepage_bullets = '["Peniaze získate späť formou cashbacku","Neplatíte žiadne poplatky!","Medzi zákazníkov už sme rozdelili 7 200 000 €"]'
  80.             WHERE id=2;
  81.         SQL);
  82.         // Drop webs_homepages
  83.         // $this->addSql('DROP TABLE webs_homepages');
  84.         // Update banner_positions
  85.         $this->addSql("
  86.             INSERT INTO webs_variants_banner_positions (web_variant_id, banner_position_id)
  87.             SELECT p.web_id, p.id FROM banner_positions p WHERE p.user_defined = 0
  88.         ");
  89.         $this->addSql('DROP INDEX IDX_74FAADC0571EDDA ON banner_positions');
  90.         $this->addSql('DROP INDEX position ON banner_positions');
  91.         $this->addSql('ALTER TABLE banner_positions DROP homepage_id');
  92.         $this->addSql('CREATE INDEX position ON banner_positions (web_id, position, not_deleted)');
  93.         // Update FAQ items
  94.         $this->addSql("
  95.             INSERT INTO webs_variants_homepage_faq_items (web_variant_id, faq_item_id, listing_order)
  96.             SELECT f.web_id, f.id, f.homepage_listing_order FROM faq_items f WHERE f.show_on_homepage = 1
  97.         ");
  98.         $this->addSql('ALTER TABLE faq_items DROP show_on_homepage, DROP homepage_listing_order');
  99.         // Update promotions
  100.         $this->addSql('ALTER TABLE promotions CHANGE show_on_homepage prefer_on_homepage TINYINT(1) NOT NULL, CHANGE homepage_listing_order homepage_preference_order INT NOT NULL');
  101.         // Update shops
  102.         $this->addSql('ALTER TABLE shops CHANGE show_on_homepage prefer_on_homepage TINYINT(1) NOT NULL, CHANGE homepage_listing_order homepage_preference_order INT NOT NULL');
  103.         // Update users
  104.         $this->addSql('ALTER TABLE users ADD web_variant_id INT DEFAULT NULL');
  105.         $this->addSql('ALTER TABLE users ADD CONSTRAINT FK_1483A5E9BA0913A3 FOREIGN KEY (web_variant_id) REFERENCES webs_variants (id)');
  106.         $this->addSql('CREATE INDEX IDX_1483A5E9BA0913A3 ON users (web_variant_id)');
  107.     }
  108.     public function down(Schema $schema): void
  109.     {
  110.     }
  111. }