From c5c6cc19a03bea7ea733849b11352768be5550ae Mon Sep 17 00:00:00 2001 From: Misha Savelyev Date: Mon, 24 Jul 2023 11:46:43 +0200 Subject: [PATCH 1/2] Set `grandparentName` for subprojects when creating projects --- backend/src/services/segmentService.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/src/services/segmentService.ts b/backend/src/services/segmentService.ts index ff76437eb9..eb721d4170 100644 --- a/backend/src/services/segmentService.ts +++ b/backend/src/services/segmentService.ts @@ -117,6 +117,7 @@ export default class SegmentService extends LoggerBase { grandparentSlug: data.parentSlug, name: data.name, parentName: data.name, + grandparentName: parent.name, }) await SequelizeRepository.commitTransaction(transaction) From c01002387b95b7b220c278737934ec502e963ed3 Mon Sep 17 00:00:00 2001 From: Misha Savelyev Date: Mon, 24 Jul 2023 12:01:43 +0200 Subject: [PATCH 2/2] Create migration to fix existing data --- .../U1690192894__fix-grandparent-name.sql | 0 .../V1690192894__fix-grandparent-name.sql | 33 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 backend/src/database/migrations/U1690192894__fix-grandparent-name.sql create mode 100644 backend/src/database/migrations/V1690192894__fix-grandparent-name.sql diff --git a/backend/src/database/migrations/U1690192894__fix-grandparent-name.sql b/backend/src/database/migrations/U1690192894__fix-grandparent-name.sql new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/src/database/migrations/V1690192894__fix-grandparent-name.sql b/backend/src/database/migrations/V1690192894__fix-grandparent-name.sql new file mode 100644 index 0000000000..a3eb70a92f --- /dev/null +++ b/backend/src/database/migrations/V1690192894__fix-grandparent-name.sql @@ -0,0 +1,33 @@ +DO $$ + DECLARE + _segment RECORD; + _grandparent RECORD; + _parent RECORD; + BEGIN + FOR _segment IN SELECT * FROM segments s WHERE s."grandparentSlug" IS NOT NULL AND s."grandparentName" IS NULL + LOOP + SELECT * INTO _grandparent + FROM segments s + WHERE s.slug = _segment."grandparentSlug" + AND s."parentSlug" IS NULL + AND s."grandparentSlug" IS NULL; + + RAISE NOTICE 'Updating segment % with grandparent %', _segment.id, _grandparent.name; + UPDATE segments SET "grandparentName" = _grandparent.name WHERE id = _segment.id; + END LOOP; + + FOR _segment IN SELECT * FROM segments s WHERE s."parentSlug" IS NOT NULL AND s."parentName" IS NULL + LOOP + SELECT * INTO _parent + FROM segments s + WHERE s.slug = _segment."parentSlug" + AND s."parentSlug" = _segment."grandparentSlug" + AND s."parentSlug" IS NOT NULL + AND s."grandparentSlug" IS NULL; + + RAISE NOTICE 'Updating segment % with parent %', _segment.id, _parent.name; + UPDATE segments SET "parentName" = _parent.name WHERE id = _segment.id; + END LOOP; + END; +$$ LANGUAGE plpgsql; +