migrations/Version20230413121653.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 Version20230413121653 extends AbstractMigration
  10. {
  11.     public function getDescription(): string
  12.     {
  13.         return '';
  14.     }
  15.     public function up(Schema $schema): void
  16.     {
  17.         //SAMPLE
  18.         $this->addSql("CREATE PROCEDURE ProcessSampleInbounds()
  19.                BEGIN
  20.                    DECLARE done INT DEFAULT 0;
  21.                    DECLARE sampleId INT;
  22.                    DECLARE line1 VARCHAR(255);
  23.                    DECLARE city VARCHAR(255);
  24.                    DECLARE zip VARCHAR(255);
  25.                    DECLARE country VARCHAR(255);
  26.                    DECLARE details VARCHAR(255);
  27.                    DECLARE inboundType VARCHAR(255);
  28.                    DECLARE newUuid CHAR(36);
  29.                    DECLARE newAddressId INT;
  30.                    DECLARE cur CURSOR FOR
  31.                        SELECT
  32.                            sample.id,
  33.                            CASE WHEN JSON_UNQUOTE(JSON_EXTRACT(inbound_address_old, '$.address')) = 'null' THEN NULL ELSE JSON_UNQUOTE(JSON_EXTRACT(inbound_address_old, '$.address')) END as line1,
  34.                            CASE WHEN JSON_UNQUOTE(JSON_EXTRACT(inbound_address_old, '$.city')) = 'null' THEN NULL ELSE JSON_UNQUOTE(JSON_EXTRACT(inbound_address_old, '$.city')) END as city,
  35.                            CASE WHEN JSON_UNQUOTE(JSON_EXTRACT(inbound_address_old, '$.zip')) = 'null' THEN NULL ELSE JSON_UNQUOTE(JSON_EXTRACT(inbound_address_old, '$.zip')) END as zip,
  36.                            COALESCE(JSON_UNQUOTE(JSON_EXTRACT(inbound_address_old, '$.country')), 'Unknown') as country,
  37.                            CASE WHEN JSON_UNQUOTE(JSON_EXTRACT(inbound_address_old, '$.district')) = 'null' THEN NULL ELSE JSON_UNQUOTE(JSON_EXTRACT(inbound_address_old, '$.district')) END as details,
  38.                            'address_type.legal' as inboundType,
  39.                            UUID() AS new_uuid
  40.                        FROM sample
  41.                        WHERE JSON_LENGTH(inbound_address_old) > 0;
  42.                    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
  43.                    OPEN cur;
  44.                    read_loop: LOOP
  45.                        FETCH cur INTO sampleId, line1, city, zip, country, details, inboundType, newUuid;
  46.                        IF done THEN
  47.                            LEAVE read_loop;
  48.                        END IF;
  49.                        INSERT INTO address (line1, city, zip, country, details, type, uuid)
  50.                        VALUES (
  51.                            NULLIF(line1, ''),
  52.                            NULLIF(city, ''),
  53.                            NULLIF(zip, ''),
  54.                            NULLIF(country, ''),
  55.                            NULLIF(details, ''),
  56.                            NULLIF(inboundType, ''),
  57.                            newUuid
  58.                        );
  59.                        SET newAddressId = LAST_INSERT_ID();
  60.                        UPDATE sample
  61.                        SET inbound_address_id = newAddressId
  62.                        WHERE id = sampleId;
  63.                    END LOOP;
  64.                    CLOSE cur;
  65.                END;");
  66.         $this->addSql("CALL ProcessSampleInbounds();");
  67.         $this->addSql("DROP PROCEDURE ProcessSampleInbounds");
  68.         $this->addSql("CREATE PROCEDURE ProcessSampleOutbounds()
  69.                BEGIN
  70.                    DECLARE done INT DEFAULT 0;
  71.                    DECLARE sampleId INT;
  72.                    DECLARE line1 VARCHAR(255);
  73.                    DECLARE city VARCHAR(255);
  74.                    DECLARE zip VARCHAR(255);
  75.                    DECLARE country VARCHAR(255);
  76.                    DECLARE details VARCHAR(255);
  77.                    DECLARE outboundType VARCHAR(255);
  78.                    DECLARE newUuid CHAR(36);
  79.                    DECLARE newAddressId INT;
  80.                    DECLARE cur CURSOR FOR
  81.                        SELECT
  82.                            sample.id,
  83.                            CASE WHEN JSON_UNQUOTE(JSON_EXTRACT(outbound_address_old, '$.address')) = 'null' THEN NULL ELSE JSON_UNQUOTE(JSON_EXTRACT(outbound_address_old, '$.address')) END as line1,
  84.                            CASE WHEN JSON_UNQUOTE(JSON_EXTRACT(outbound_address_old, '$.city')) = 'null' THEN NULL ELSE JSON_UNQUOTE(JSON_EXTRACT(outbound_address_old, '$.city')) END as city,
  85.                            CASE WHEN JSON_UNQUOTE(JSON_EXTRACT(outbound_address_old, '$.zip')) = 'null' THEN NULL ELSE JSON_UNQUOTE(JSON_EXTRACT(outbound_address_old, '$.zip')) END as zip,
  86.                            COALESCE(JSON_UNQUOTE(JSON_EXTRACT(outbound_address_old, '$.country')), 'Unknown') as country,
  87.                            CASE WHEN JSON_UNQUOTE(JSON_EXTRACT(outbound_address_old, '$.district')) = 'null' THEN NULL ELSE JSON_UNQUOTE(JSON_EXTRACT(outbound_address_old, '$.district')) END as details,
  88.                            'address_type.delivery' as outboundType,
  89.                            UUID() AS new_uuid
  90.                        FROM sample                       
  91.                        WHERE JSON_LENGTH(outbound_address_old) > 0;
  92.                    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
  93.                    OPEN cur;
  94.                    read_loop: LOOP
  95.                        FETCH cur INTO sampleId, line1, city, zip, country, details, outboundType, newUuid;
  96.                        IF done THEN
  97.                            LEAVE read_loop;
  98.                        END IF;
  99.                        INSERT INTO address (line1, city, zip, country, details, type, uuid)
  100.                        VALUES (
  101.                            NULLIF(line1, ''),
  102.                            NULLIF(city, ''),
  103.                            NULLIF(zip, ''),
  104.                            NULLIF(country, ''),
  105.                            NULLIF(details, ''),
  106.                            NULLIF(outboundType, ''),
  107.                            newUuid
  108.                        );
  109.                        SET newAddressId = LAST_INSERT_ID();
  110.                        UPDATE sample
  111.                        SET outbound_address_id = newAddressId
  112.                        WHERE id = sampleId;
  113.                    END LOOP;
  114.                    CLOSE cur;
  115.                END;");
  116.         $this->addSql("CALL ProcessSampleOutbounds();");
  117.         $this->addSql("DROP PROCEDURE ProcessSampleOutbounds");
  118.     }
  119.     public function down(Schema $schema): void
  120.     {
  121.         // this down() migration is auto-generated, please modify it to your needs
  122.     }
  123. }