rename-duplicate-root-pages.ts 833 B

12345678910111213141516171819202122232425262728293031
  1. // see: https://github.com/weseek/growi/issues/8337
  2. import { type IPageHasId } from '@growi/core';
  3. import mongoose from 'mongoose';
  4. import { type PageModel } from '~/server/models/page';
  5. export const renameDuplicateRootPages = async(): Promise<void> => {
  6. const Page = mongoose.model<IPageHasId, PageModel>('Page');
  7. const rootPages = await Page.find({ path: '/' }).sort({ createdAt: 1 });
  8. if (rootPages.length <= 1) {
  9. return;
  10. }
  11. const duplicatedRootPages = rootPages.slice(1);
  12. const requests = duplicatedRootPages.map((page) => {
  13. return {
  14. updateOne: {
  15. filter: { _id: page._id },
  16. update: {
  17. $set: {
  18. parent: rootPages[0],
  19. path: `/obsolete-root-page-${page._id.toString()}`,
  20. },
  21. },
  22. },
  23. };
  24. });
  25. await Page.bulkWrite(requests);
  26. };