diff --git a/src/models/pageOrder.js b/src/models/pageOrder.js index 0e08ad2..d9e94c1 100644 --- a/src/models/pageOrder.js +++ b/src/models/pageOrder.js @@ -167,6 +167,13 @@ class PageOrder { return this.order[currentPageInOrder + 1]; } + /** + * @param {string[]} order - define new order + */ + set order(order) { + this._order = order + } + /** * Returns ordered list * diff --git a/src/utils/database/pagesOrder.js b/src/utils/database/pagesOrder.js index 2c7324f..f86c1f1 100644 --- a/src/utils/database/pagesOrder.js +++ b/src/utils/database/pagesOrder.js @@ -1,6 +1,5 @@ const Datastore = require('nedb'); const config = require('../../../config'); - const db = new Datastore({filename: `./${config.database}/pagesOrder.db`, autoload: true}); /** @@ -22,11 +21,25 @@ const db = new Datastore({filename: `./${config.database}/pagesOrder.db`, autolo }); if (!order) { - const initialData = { - page: '0', - order: [] - }; - await db.insert(initialData); + const Pages = require('../../controllers/pages'); + + // Converter + const pages = await Pages.getAll(); + + async function convert(pages, parentId) { + const children = pages.filter(page => page._parent === parentId); + const initialData = { + page: parentId, + order: children.map(page => page._id) + }; + await db.insert(initialData); + + children.forEach(async page => { + await convert(pages, page._id); + }); + } + + await convert(pages, parentIdOfRootPages); } }());