vendor/bluue/products-bundle/migrations/Version20230206152033.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace ProductsBundleMigrations;
  4. use DateTime;
  5. use Doctrine\DBAL\Schema\Schema;
  6. use Symfony\Component\Uid\UuidV6;
  7. use Doctrine\Migrations\AbstractMigration;
  8. final class Version20230206152033 extends AbstractMigration
  9. {
  10.     public function up(Schema $schema): void
  11.     {
  12.         $this->addSql('CREATE TABLE products_bundle__pack_product (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', parent_id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', child_id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', created_by_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', updated_by_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', deleted_by_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', position INT NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, deleted_at DATETIME DEFAULT NULL, INDEX IDX_D52AD2E0727ACA70 (parent_id), INDEX IDX_D52AD2E0DD62C21B (child_id), INDEX IDX_D52AD2E0B03A8386 (created_by_id), INDEX IDX_D52AD2E0896DBBDE (updated_by_id), INDEX IDX_D52AD2E0C76F1F52 (deleted_by_id), INDEX position (position), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  13.         $this->addSql('ALTER TABLE products_bundle__pack_product ADD CONSTRAINT FK_D52AD2E0727ACA70 FOREIGN KEY (parent_id) REFERENCES products_bundle__product (id)');
  14.         $this->addSql('ALTER TABLE products_bundle__pack_product ADD CONSTRAINT FK_D52AD2E0DD62C21B FOREIGN KEY (child_id) REFERENCES products_bundle__product (id)');
  15.         $this->addSql('ALTER TABLE products_bundle__pack_product ADD CONSTRAINT FK_D52AD2E0B03A8386 FOREIGN KEY (created_by_id) REFERENCES user (id)');
  16.         $this->addSql('ALTER TABLE products_bundle__pack_product ADD CONSTRAINT FK_D52AD2E0896DBBDE FOREIGN KEY (updated_by_id) REFERENCES user (id)');
  17.         $this->addSql('ALTER TABLE products_bundle__pack_product ADD CONSTRAINT FK_D52AD2E0C76F1F52 FOREIGN KEY (deleted_by_id) REFERENCES user (id)');
  18.     }
  19.     public function down(Schema $schema): void
  20.     {
  21.         $this->addSql('ALTER TABLE products_bundle__pack_product DROP FOREIGN KEY FK_D52AD2E0727ACA70');
  22.         $this->addSql('ALTER TABLE products_bundle__pack_product DROP FOREIGN KEY FK_D52AD2E0DD62C21B');
  23.         $this->addSql('ALTER TABLE products_bundle__pack_product DROP FOREIGN KEY FK_D52AD2E0B03A8386');
  24.         $this->addSql('ALTER TABLE products_bundle__pack_product DROP FOREIGN KEY FK_D52AD2E0896DBBDE');
  25.         $this->addSql('ALTER TABLE products_bundle__pack_product DROP FOREIGN KEY FK_D52AD2E0C76F1F52');
  26.         $this->addSql('DROP TABLE products_bundle__pack_product');
  27.     }
  28.     public function postUp(Schema $schema): void
  29.     {
  30.         parent::postUp($schema);
  31.         $languages $this->connection->executeQuery('SELECT * FROM language WHERE deleted_at IS NULL')
  32.             ->fetchAllAssociative();
  33.         $rootLocale 'en';
  34.         $defaultLocale $this->connection
  35.             ->executeQuery('SELECT locale FROM language WHERE deleted_at IS NULL AND is_default = 1')
  36.             ->fetchOne() ?: 'en';
  37.         $productType = ['fr' => 'Pack''en' => 'Pack''key' => 3];
  38.         $productTypeId = (new UuidV6())->toBinary();
  39.         $this->connection->insert('products_bundle__product_type', [
  40.             'id' => $productTypeId,
  41.             'name' => !empty($productType[$defaultLocale]) ?
  42.                 $productType[$defaultLocale] : $productType[$rootLocale],
  43.             'number' => $productType['key'],
  44.             'is_active' => 1,
  45.             'created_at' => (new DateTime())->format('Y-m-d H:i:s'),
  46.             'updated_at' => (new DateTime())->format('Y-m-d H:i:s')
  47.         ]);
  48.         foreach ($languages as $language) {
  49.             $localeTo $rootLocale;
  50.             if (!empty($productType[$language['locale']])) {
  51.                 $localeTo $language['locale'];
  52.             } elseif (!empty($productType[$defaultLocale])) {
  53.                 $localeTo $defaultLocale;
  54.             }
  55.             $this->connection->insert('products_bundle__product_type_translations', [
  56.                 'object_id' => $productTypeId,
  57.                 'locale' => $language['locale'],
  58.                 'field' => 'name',
  59.                 'content' => $productType[$localeTo]
  60.             ]);
  61.         }
  62.     }
  63. }