migrations/Version20230411053213.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations;
  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 Version20230411053213 extends AbstractMigration
  10. {
  11.     public function getDescription(): string
  12.     {
  13.         return '';
  14.     }
  15.     public function up(Schema $schema): void
  16.     {
  17.         //MANUFACTURER ADDRESS
  18.         $this->addSql("CREATE PROCEDURE ProcessManufacturerAddresses()
  19.            BEGIN
  20.                DECLARE done INT DEFAULT 0;
  21.                DECLARE manufacturerAddressId INT;
  22.                DECLARE line1 TEXT;
  23.                DECLARE addressCity VARCHAR(255);
  24.                DECLARE addressZip VARCHAR(40);
  25.                DECLARE addressCountry VARCHAR(10);
  26.                DECLARE details VARCHAR(255);
  27.                DECLARE addressType VARCHAR(255);
  28.                DECLARE newUuid CHAR(36);
  29.                DECLARE newAddressId INT;
  30.                 DECLARE updatedAddressType VARCHAR(40);
  31.                DECLARE cur CURSOR FOR
  32.                    SELECT
  33.                        id,
  34.                        address_old as line1,
  35.                        city as addressCity,
  36.                        zip as addressZip,
  37.                        COALESCE(country, 'Unknown') as addressCountry,
  38.                        district as details,
  39.                        type as addressType,
  40.                        UUID() AS new_uuid
  41.                    FROM manufacturer_address;
  42.                DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
  43.                OPEN cur;
  44.                read_loop: LOOP
  45.                    FETCH cur INTO manufacturerAddressId, line1, addressCity, addressZip, addressCountry, details, addressType, newUuid;
  46.                    IF done THEN
  47.                        LEAVE read_loop;
  48.                    END IF;
  49.                    
  50.                            -- Convert manufacturer address type to address type
  51.                     CASE addressType
  52.                         WHEN 'manufacturing' THEN
  53.                             SET updatedAddressType = 'address_type.manufacturing';
  54.                         WHEN 'office' THEN
  55.                             SET updatedAddressType = 'address_type.legal';
  56.                         WHEN 'warehouse' THEN
  57.                             SET updatedAddressType = 'address_type.warehouse';
  58.                         ELSE
  59.                             SET updatedAddressType = NULL;
  60.                     END CASE;
  61.                    INSERT INTO address (line1, city, zip, country, details, type, uuid)
  62.                    VALUES (
  63.                        line1,
  64.                        addressCity,
  65.                        addressZip,
  66.                        addressCountry,
  67.                        details,
  68.                        updatedAddressType,
  69.                        newUuid
  70.                    );
  71.                    SET newAddressId = LAST_INSERT_ID();
  72.                    UPDATE manufacturer_address
  73.                    SET address_id = newAddressId
  74.                    WHERE id = manufacturerAddressId;
  75.                END LOOP;
  76.                CLOSE cur;
  77.            END;");
  78.         $this->addSql("CALL ProcessManufacturerAddresses();");
  79.         $this->addSql("DROP PROCEDURE ProcessManufacturerAddresses");
  80.     }
  81.     public function down(Schema $schema): void
  82.     {
  83.         // this down() migration is auto-generated, please modify it to your needs
  84.     }
  85. }