feat: rebuild tree on page update

This commit is contained in:
NGPixel 2019-10-13 22:35:42 -04:00
parent 62d1d7a1df
commit 73c89dfe44
3 changed files with 32 additions and 9 deletions

View File

@ -263,12 +263,7 @@ module.exports = {
*/ */
async rebuildTree(obj, args, context) { async rebuildTree(obj, args, context) {
try { try {
const rebuildJob = await WIKI.scheduler.registerJob({ await WIKI.models.pages.rebuildTree()
name: 'rebuild-tree',
immediate: true,
worker: true
})
await rebuildJob.finished
return { return {
responseResult: graphHelper.generateSuccess('Page tree rebuilt successfully.') responseResult: graphHelper.generateSuccess('Page tree rebuilt successfully.')
} }

View File

@ -10,7 +10,6 @@ module.exports = async (pageId) => {
await WIKI.configSvc.loadFromDb() await WIKI.configSvc.loadFromDb()
await WIKI.configSvc.applyFlags() 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']) const pages = await WIKI.models.pages.query().select('id', 'path', 'localeCode', 'title', 'isPrivate', 'privateNS').orderBy(['localeCode', 'path'])
let tree = [] let tree = []
let pik = 0 let pik = 0
@ -52,6 +51,7 @@ module.exports = async (pageId) => {
} }
} }
await WIKI.models.knex.table('pageTree').truncate()
if (tree.length > 0) { if (tree.length > 0) {
await WIKI.models.knex.table('pageTree').insert(tree) await WIKI.models.knex.table('pageTree').insert(tree)
} }

View File

@ -270,6 +270,9 @@ module.exports = class Page extends Model {
// -> Render page to HTML // -> Render page to HTML
await WIKI.models.pages.renderPage(page) await WIKI.models.pages.renderPage(page)
// -> Rebuild page tree
await WIKI.models.pages.rebuildTree()
// -> Add to Search Index // -> Add to Search Index
const pageContents = await WIKI.models.pages.query().findById(page.id).select('render') const pageContents = await WIKI.models.pages.query().findById(page.id).select('render')
page.safeContent = WIKI.models.pages.cleanHTML(pageContents.render) page.safeContent = WIKI.models.pages.cleanHTML(pageContents.render)
@ -370,6 +373,11 @@ module.exports = class Page extends Model {
destinationPath: opts.path, destinationPath: opts.path,
user: opts.user 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 return page
@ -427,6 +435,9 @@ module.exports = class Page extends Model {
}).findById(page.id) }).findById(page.id)
await WIKI.models.pages.deletePageFromCache(page) await WIKI.models.pages.deletePageFromCache(page)
// -> Rebuild page tree
await WIKI.models.pages.rebuildTree()
// -> Rename in Search Index // -> Rename in Search Index
await WIKI.data.searchEngine.renamed({ await WIKI.data.searchEngine.renamed({
...page, ...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.query().delete().where('id', page.id)
await WIKI.models.pages.deletePageFromCache(page) await WIKI.models.pages.deletePageFromCache(page)
// -> Rebuild page tree
await WIKI.models.pages.rebuildTree()
// -> Delete from Search Index // -> Delete from Search Index
await WIKI.data.searchEngine.deleted(page) 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 {Object} opts - Page parameters
* @param {string} opts.path - Page Path * @param {string} opts.path - Page Path
* @param {string} opts.locale - Page Locale Code * @param {string} opts.locale - Page Locale Code
* @param {string} [opts.sourcePath] - Previous Page Path (move only) * @param {string} [opts.sourcePath] - Previous Page Path (move only)
* @param {string} [opts.sourceLocale] - Previous Page Locale Code (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 * @returns {Promise} Promise with no value
*/ */
static async reconnectLinks (opts) { 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 * Trigger the rendering of a page
* *