@@ -29,6 +29,7 @@ public function down(Schema $schema): void
2929 $ this ->createVersionTableFields ();
3030 $ this ->createVersionLinkTables ();
3131 $ this ->revertVersionTableColumns ();
32+ $ this ->fillVersionTables ();
3233 $ this ->dropCurrentMetadataColumnFromVersionTable ();
3334 $ this ->dropMetadataTables ();
3435 }
@@ -454,7 +455,7 @@ private function dropVersionTableFields(): void
454455 private function createVersionTableFields (): void
455456 {
456457 $ this ->addSql (<<<'SQL'
457- ALTER TABLE version ADD package_name VARCHAR(255) NOT NULL
458+ ALTER TABLE version ADD package_name VARCHAR(255) DEFAULT NULL
458459 SQL);
459460 $ this ->addSql (<<<'SQL'
460461 ALTER TABLE version ADD description TEXT DEFAULT NULL
@@ -466,7 +467,7 @@ private function createVersionTableFields(): void
466467 ALTER TABLE version ADD homepage VARCHAR(255) DEFAULT NULL
467468 SQL);
468469 $ this ->addSql (<<<'SQL'
469- ALTER TABLE version ADD license JSON NOT NULL
470+ ALTER TABLE version ADD license JSON DEFAULT NULL
470471 SQL);
471472 $ this ->addSql (<<<'SQL'
472473 ALTER TABLE version ADD type VARCHAR(255) DEFAULT NULL
@@ -481,7 +482,7 @@ private function createVersionTableFields(): void
481482 ALTER TABLE version ADD dist JSON DEFAULT NULL
482483 SQL);
483484 $ this ->addSql (<<<'SQL'
484- ALTER TABLE version ADD autoload JSON NOT NULL
485+ ALTER TABLE version ADD autoload JSON DEFAULT NULL
485486 SQL);
486487 $ this ->addSql (<<<'SQL'
487488 ALTER TABLE version ADD binaries JSON DEFAULT NULL
@@ -507,6 +508,41 @@ private function createVersionTableFields(): void
507508 $ this ->addSql (<<<'SQL'
508509 ALTER TABLE version ADD released_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL
509510 SQL);
511+
512+ $ this ->addSql (<<<'SQL'
513+ UPDATE version
514+ SET
515+ package_name = metadata.package_name,
516+ description = metadata.description,
517+ readme = metadata.readme,
518+ homepage = metadata.homepage,
519+ license = metadata.license,
520+ type = metadata.type,
521+ target_dir = metadata.target_dir,
522+ source = metadata.source,
523+ dist = metadata.dist,
524+ autoload = metadata.autoload,
525+ binaries = metadata.binaries,
526+ include_paths = metadata.include_paths,
527+ php_ext = metadata.php_ext,
528+ authors = metadata.authors,
529+ support = metadata.support,
530+ funding = metadata.funding,
531+ extra = metadata.extra,
532+ released_at = metadata.released_at
533+ FROM metadata
534+ WHERE version.current_metadata_id = metadata.id
535+ SQL);
536+
537+ $ this ->addSql (<<<'SQL'
538+ ALTER TABLE version ALTER COLUMN package_name SET NOT NULL
539+ SQL);
540+ $ this ->addSql (<<<'SQL'
541+ ALTER TABLE version ALTER COLUMN license SET NOT NULL
542+ SQL);
543+ $ this ->addSql (<<<'SQL'
544+ ALTER TABLE version ALTER COLUMN autoload SET NOT NULL
545+ SQL);
510546 }
511547
512548 private function createVersionLinkTables (): void
@@ -678,6 +714,50 @@ private function revertVersionTableColumns(): void
678714 SQL);
679715 }
680716
717+ private function fillVersionTables (): void
718+ {
719+ $ this ->addSql (<<<'SQL'
720+ UPDATE version
721+ SET
722+ description = metadata.description,
723+ readme = metadata.readme,
724+ homepage = metadata.homepage,
725+ license = metadata.license,
726+ type = metadata.type,
727+ target_dir = metadata.target_dir,
728+ source = metadata.source,
729+ dist = metadata.dist,
730+ autoload = metadata.autoload,
731+ binaries = metadata.binaries,
732+ include_paths = metadata.include_paths,
733+ php_ext = metadata.php_ext,
734+ authors = metadata.authors,
735+ support = metadata.support,
736+ funding = metadata.funding,
737+ extra = metadata.extra,
738+ released_at = metadata.released_at
739+ FROM metadata
740+ WHERE version.current_metadata_id = metadata.id
741+ SQL);
742+
743+ $ linkTables = ['require ' , 'dev_require ' , 'conflict ' , 'provide ' , 'replace ' , 'suggest ' ];
744+
745+ foreach ($ linkTables as $ linkTable ) {
746+ $ this ->addSql (<<<SQL
747+ INSERT INTO version_ {$ linkTable }_link (version_id, linked_package_name, linked_version_constraint)
748+ SELECT version.id, metadata_link.linked_package_name, metadata_link.linked_version_constraint
749+ FROM metadata_ {$ linkTable }_link metadata_link
750+ INNER JOIN metadata metadata ON metadata_link.metadata_id = metadata.id
751+ INNER JOIN version version ON version.current_metadata_id = metadata.id
752+ WHERE NOT EXISTS (
753+ SELECT 1 FROM version_ {$ linkTable }_link version_link
754+ WHERE version_link.version_id = metadata.version_id
755+ AND version_link.linked_package_name = metadata_link.linked_package_name
756+ )
757+ SQL );
758+ }
759+ }
760+
681761 private function dropCurrentMetadataColumnFromVersionTable (): void
682762 {
683763 $ this ->addSql (<<<'SQL'
0 commit comments