diff --git a/server/graph/resolvers/page.js b/server/graph/resolvers/page.js index 5b0a95dd..5c8ee704 100644 --- a/server/graph/resolvers/page.js +++ b/server/graph/resolvers/page.js @@ -263,12 +263,7 @@ module.exports = { */ async rebuildTree(obj, args, context) { try { - const rebuildJob = await WIKI.scheduler.registerJob({ - name: 'rebuild-tree', - immediate: true, - worker: true - }) - await rebuildJob.finished + await WIKI.models.pages.rebuildTree() return { responseResult: graphHelper.generateSuccess('Page tree rebuilt successfully.') } diff --git a/server/jobs/rebuild-tree.js b/server/jobs/rebuild-tree.js index a2805bc7..81e7ecf4 100644 --- a/server/jobs/rebuild-tree.js +++ b/server/jobs/rebuild-tree.js @@ -10,7 +10,6 @@ module.exports = async (pageId) => { await WIKI.configSvc.loadFromDb() await WIKI.configSvc.applyFlags() - await WIKI.models.knex.table('pageTree').truncate() const pages = await WIKI.models.pages.query().select('id', 'path', 'localeCode', 'title', 'isPrivate', 'privateNS').orderBy(['localeCode', 'path']) let tree = [] let pik = 0 @@ -52,6 +51,7 @@ module.exports = async (pageId) => { } } + await WIKI.models.knex.table('pageTree').truncate() if (tree.length > 0) { await WIKI.models.knex.table('pageTree').insert(tree) } diff --git a/server/models/pages.js b/server/models/pages.js index 735f4b01..84b94d6b 100644 --- a/server/models/pages.js +++ b/server/models/pages.js @@ -270,6 +270,9 @@ module.exports = class Page extends Model { // -> Render page to HTML await WIKI.models.pages.renderPage(page) + // -> Rebuild page tree + await WIKI.models.pages.rebuildTree() + // -> Add to Search Index const pageContents = await WIKI.models.pages.query().findById(page.id).select('render') page.safeContent = WIKI.models.pages.cleanHTML(pageContents.render) @@ -370,6 +373,11 @@ module.exports = class Page extends Model { destinationPath: opts.path, user: opts.user }) + } else { + // -> Update title of page tree entry + await WIKI.models.knex.table('pageTree').where({ + pageId: page.id + }).update('title', page.title) } return page @@ -427,6 +435,9 @@ module.exports = class Page extends Model { }).findById(page.id) await WIKI.models.pages.deletePageFromCache(page) + // -> Rebuild page tree + await WIKI.models.pages.rebuildTree() + // -> Rename in Search Index await WIKI.data.searchEngine.renamed({ ...page, @@ -499,6 +510,9 @@ module.exports = class Page extends Model { await WIKI.models.pages.query().delete().where('id', page.id) await WIKI.models.pages.deletePageFromCache(page) + // -> Rebuild page tree + await WIKI.models.pages.rebuildTree() + // -> Delete from Search Index await WIKI.data.searchEngine.deleted(page) @@ -519,14 +533,14 @@ module.exports = class Page extends Model { } /** - * Reconnect links to new/updated/deleted page + * Reconnect links to new/move/deleted page * * @param {Object} opts - Page parameters * @param {string} opts.path - Page Path * @param {string} opts.locale - Page Locale Code * @param {string} [opts.sourcePath] - Previous Page Path (move only) * @param {string} [opts.sourceLocale] - Previous Page Locale Code (move only) - * @param {string} opts.mode - Page Update mode (new, move, delete) + * @param {string} opts.mode - Page Update mode (create, move, delete) * @returns {Promise} Promise with no value */ static async reconnectLinks (opts) { @@ -595,6 +609,20 @@ module.exports = class Page extends Model { } } + /** + * Rebuild page tree for new/updated/deleted page + * + * @returns {Promise} Promise with no value + */ + static async rebuildTree() { + const rebuildJob = await WIKI.scheduler.registerJob({ + name: 'rebuild-tree', + immediate: true, + worker: true + }) + return rebuildJob.finished + } + /** * Trigger the rendering of a page *