diff --git a/bin/db-converter/index.js b/bin/db-converter/index.js index 6a44fc0..fb00a84 100644 --- a/bin/db-converter/index.js +++ b/bin/db-converter/index.js @@ -1,6 +1,6 @@ import './program.js'; -import { ObjectId } from 'mongodb'; -import { closeConnection, getFromLocalDB, saveData } from './lib.js'; +import {ObjectId} from 'mongodb'; +import {closeConnection, getFromLocalDB, saveData} from './lib.js'; console.log('Start converting...'); const [pages, aliases, files, pagesOrder] = ['pages', 'aliases', 'files', 'pagesOrder'].map(getFromLocalDB); @@ -8,6 +8,10 @@ const [pages, aliases, files, pagesOrder] = ['pages', 'aliases', 'files', 'pages const pagesIdsMap = pages.reduce((acc, curr) => { const newId = new ObjectId(); + if (acc.has(curr._id)) { + console.log(`Duplicate id detected ${curr._id}. Skipping it`); + } + acc.set(curr._id, newId); return acc; @@ -16,12 +20,18 @@ const pagesIdsMap = pages.reduce((acc, curr) => { // Explicitly set the root page id pagesIdsMap.set('0', '0'); -const newPages = pages.map(page => { - return { +const newPages = []; + +pagesIdsMap.forEach((newId, oldId) => { + if (newId === '0') { + return + } + const page = pages.find((p) => p._id === oldId); + newPages.push({ ...page, - _id: pagesIdsMap.get(page._id), + _id: newId, parent: page.parent ? pagesIdsMap.get(page.parent) : null, - }; + }); }); await saveData('pages', newPages);