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; + 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)