Skip to content

Commit 0f83eee

Browse files
committed
Transfer keywords in metadata refactoring migration
Signed-off-by: Tim Goudriaan <tim@codedmonkey.com>
1 parent 955e91c commit 0f83eee

1 file changed

Lines changed: 56 additions & 34 deletions

File tree

migrations/Version20260120114538.php

Lines changed: 56 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,13 @@ private function fillMetadataTables(): void
291291
INNER JOIN metadata metadata ON link.version_id = metadata.version_id
292292
SQL);
293293
}
294+
295+
$this->addSql(<<<'SQL'
296+
INSERT INTO metadata_keyword (metadata_id, keyword_id)
297+
SELECT metadata.id, vk.keyword_id
298+
FROM version_keyword vk
299+
INNER JOIN metadata metadata ON vk.version_id = metadata.version_id
300+
SQL);
294301
}
295302

296303
private function addCurrentMetadataColumnToVersionTable(): void
@@ -356,12 +363,6 @@ private function dropVersionLinkTables(): void
356363
$this->addSql(<<<'SQL'
357364
ALTER TABLE version_dev_require_link DROP CONSTRAINT fk_98f2e46e4bbc2705
358365
SQL);
359-
$this->addSql(<<<'SQL'
360-
ALTER TABLE version_keyword DROP CONSTRAINT fk_a65a946f4bbc2705
361-
SQL);
362-
$this->addSql(<<<'SQL'
363-
ALTER TABLE version_keyword DROP CONSTRAINT fk_a65a946f115d4552
364-
SQL);
365366
$this->addSql(<<<'SQL'
366367
ALTER TABLE version_provide_link DROP CONSTRAINT fk_150ec10c4bbc2705
367368
SQL);
@@ -380,9 +381,6 @@ private function dropVersionLinkTables(): void
380381
$this->addSql(<<<'SQL'
381382
DROP TABLE version_dev_require_link
382383
SQL);
383-
$this->addSql(<<<'SQL'
384-
DROP TABLE version_keyword
385-
SQL);
386384
$this->addSql(<<<'SQL'
387385
DROP TABLE version_provide_link
388386
SQL);
@@ -395,6 +393,16 @@ private function dropVersionLinkTables(): void
395393
$this->addSql(<<<'SQL'
396394
DROP TABLE version_suggest_link
397395
SQL);
396+
397+
$this->addSql(<<<'SQL'
398+
ALTER TABLE version_keyword DROP CONSTRAINT fk_a65a946f4bbc2705
399+
SQL);
400+
$this->addSql(<<<'SQL'
401+
ALTER TABLE version_keyword DROP CONSTRAINT fk_a65a946f115d4552
402+
SQL);
403+
$this->addSql(<<<'SQL'
404+
DROP TABLE version_keyword
405+
SQL);
398406
}
399407

400408
private function dropVersionTableFields(): void
@@ -559,19 +567,6 @@ private function createVersionLinkTables(): void
559567
$this->addSql(<<<'SQL'
560568
CREATE INDEX idx_98f2e46e4bbc2705 ON version_dev_require_link (version_id)
561569
SQL);
562-
$this->addSql(<<<'SQL'
563-
CREATE TABLE version_keyword (
564-
version_id INT NOT NULL,
565-
keyword_id INT NOT NULL,
566-
PRIMARY KEY (version_id, keyword_id)
567-
)
568-
SQL);
569-
$this->addSql(<<<'SQL'
570-
CREATE INDEX idx_a65a946f115d4552 ON version_keyword (keyword_id)
571-
SQL);
572-
$this->addSql(<<<'SQL'
573-
CREATE INDEX idx_a65a946f4bbc2705 ON version_keyword (version_id)
574-
SQL);
575570
$this->addSql(<<<'SQL'
576571
CREATE TABLE version_provide_link (
577572
id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
@@ -632,18 +627,6 @@ private function createVersionLinkTables(): void
632627
ADD
633628
CONSTRAINT fk_98f2e46e4bbc2705 FOREIGN KEY (version_id) REFERENCES version (id) NOT DEFERRABLE INITIALLY IMMEDIATE
634629
SQL);
635-
$this->addSql(<<<'SQL'
636-
ALTER TABLE
637-
version_keyword
638-
ADD
639-
CONSTRAINT fk_a65a946f4bbc2705 FOREIGN KEY (version_id) REFERENCES version (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE
640-
SQL);
641-
$this->addSql(<<<'SQL'
642-
ALTER TABLE
643-
version_keyword
644-
ADD
645-
CONSTRAINT fk_a65a946f115d4552 FOREIGN KEY (keyword_id) REFERENCES keyword (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE
646-
SQL);
647630
$this->addSql(<<<'SQL'
648631
ALTER TABLE
649632
version_provide_link
@@ -668,6 +651,32 @@ private function createVersionLinkTables(): void
668651
ADD
669652
CONSTRAINT fk_de9b76884bbc2705 FOREIGN KEY (version_id) REFERENCES version (id) NOT DEFERRABLE INITIALLY IMMEDIATE
670653
SQL);
654+
655+
$this->addSql(<<<'SQL'
656+
CREATE TABLE version_keyword (
657+
version_id INT NOT NULL,
658+
keyword_id INT NOT NULL,
659+
PRIMARY KEY (version_id, keyword_id)
660+
)
661+
SQL);
662+
$this->addSql(<<<'SQL'
663+
CREATE INDEX idx_a65a946f115d4552 ON version_keyword (keyword_id)
664+
SQL);
665+
$this->addSql(<<<'SQL'
666+
CREATE INDEX idx_a65a946f4bbc2705 ON version_keyword (version_id)
667+
SQL);
668+
$this->addSql(<<<'SQL'
669+
ALTER TABLE
670+
version_keyword
671+
ADD
672+
CONSTRAINT fk_a65a946f4bbc2705 FOREIGN KEY (version_id) REFERENCES version (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE
673+
SQL);
674+
$this->addSql(<<<'SQL'
675+
ALTER TABLE
676+
version_keyword
677+
ADD
678+
CONSTRAINT fk_a65a946f115d4552 FOREIGN KEY (keyword_id) REFERENCES keyword (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE
679+
SQL);
671680
}
672681

673682
private function revertVersionTableColumns(): void
@@ -742,6 +751,19 @@ private function fillVersionTables(): void
742751
)
743752
SQL);
744753
}
754+
755+
$this->addSql(<<<'SQL'
756+
INSERT INTO version_keyword (version_id, keyword_id)
757+
SELECT version.id, mk.keyword_id
758+
FROM metadata_keyword mk
759+
INNER JOIN metadata metadata ON mk.metadata_id = metadata.id
760+
INNER JOIN version version ON version.current_metadata_id = metadata.id
761+
WHERE NOT EXISTS (
762+
SELECT 1 FROM version_keyword vk
763+
WHERE vk.version_id = version.id
764+
AND vk.keyword_id = mk.keyword_id
765+
)
766+
SQL);
745767
}
746768

747769
private function dropCurrentMetadataColumnFromVersionTable(): void

0 commit comments

Comments
 (0)