Просмотр исходного кода

Merge pull request #7637 from weseek/fix/revision-path-to-page-id-schema-migration--fixed-7549

fix: Revision schema migration for v5 to v6
Yuki Takei 2 лет назад
Родитель
Сommit
9900627613

+ 18 - 7
apps/app/src/migrations/20211227060705-revision-path-to-page-id-schema-migration.js → apps/app/src/migrations/20211227060705-revision-path-to-page-id-schema-migration--fixed-7549.js

@@ -9,7 +9,7 @@ import { getModelSafely, getMongoUri, mongoOptions } from '~/server/util/mongoos
 import loggerFactory from '~/utils/logger';
 
 
-const logger = loggerFactory('growi:migrate:revision-path-to-page-id-schema-migration');
+const logger = loggerFactory('growi:migrate:revision-path-to-page-id-schema-migration--fixed-7549');
 
 const LIMIT = 300;
 
@@ -20,16 +20,21 @@ module.exports = {
     const Page = getModelSafely('Page') || getPageModel();
     const Revision = getModelSafely('Revision') || require('~/server/models/revision')();
 
-    const pagesStream = await Page.find({ revision: { $ne: null } }, { _id: 1, revision: 1 }).cursor({ batch_size: LIMIT });
+    const pagesStream = await Page.find({ revision: { $ne: null } }, { _id: 1, path: 1 }).cursor({ batch_size: LIMIT });
     const batchStrem = createBatchStream(LIMIT);
 
     const migratePagesStream = new Writable({
       objectMode: true,
-      async write(pages, encoding, callback) {
+      async write(pages, _encoding, callback) {
         const updateManyOperations = pages.map((page) => {
           return {
             updateMany: {
-              filter: { _id: page.revision },
+              filter: {
+                $and: [
+                  { path: page.path },
+                  { pageId: { $exists: false } },
+                ],
+              },
               update: [
                 {
                   $unset: ['path'],
@@ -66,16 +71,22 @@ module.exports = {
     const Page = getModelSafely('Page') || getPageModel();
     const Revision = getModelSafely('Revision') || require('~/server/models/revision')();
 
-    const pagesStream = await Page.find({ revision: { $ne: null } }, { _id: 1, revision: 1, path: 1 }).cursor({ batch_size: LIMIT });
+    const pagesStream = await Page.find({ revision: { $ne: null } }, { _id: 1, path: 1 }).cursor({ batch_size: LIMIT });
     const batchStrem = createBatchStream(LIMIT);
 
     const migratePagesStream = new Writable({
       objectMode: true,
-      async write(pages, encoding, callback) {
+      async write(pages, _encoding, callback) {
         const updateManyOperations = pages.map((page) => {
           return {
             updateMany: {
-              filter: { _id: page.revision },
+              filter: {
+                $and: [
+                  { pageId: page._id },
+                  { path: { $exists: false } },
+                ],
+
+              },
               update: [
                 {
                   $unset: ['pageId'],

+ 1 - 1
turbo.json

@@ -90,7 +90,7 @@
     },
     "@growi/app#dev:migrate": {
       "outputs": ["tmp/cache/migration-status.out"],
-      "inputs": ["src/migration/*.js"],
+      "inputs": ["src/migrations/*.js"],
       "outputMode": "new-only"
     },
     "@growi/app#dev:styles-prebuilt": {