Commit 73c89dfe authored by NGPixel's avatar NGPixel

feat: rebuild tree on page update

parent 62d1d7a1
...@@ -263,12 +263,7 @@ module.exports = { ...@@ -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.')
} }
......
...@@ -10,7 +10,6 @@ module.exports = async (pageId) => { ...@@ -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) => { ...@@ -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)
} }
......
...@@ -270,6 +270,9 @@ module.exports = class Page extends Model { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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) {
...@@ -596,6 +610,20 @@ module.exports = class Page extends Model { ...@@ -596,6 +610,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
* *
* @param {Object} page Page Model Instance * @param {Object} page Page Model Instance
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment