feat: rebuild tree on page update
This commit is contained in:
parent
62d1d7a1df
commit
73c89dfe44
@ -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) => {
|
|||||||
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)
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user