|
|
|
@ -10,9 +10,13 @@ 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
|
|
|
|
|
let numberOfBatchesSaved = 0
|
|
|
|
|
// -> Save in chunks, because of per query max parameters (35k Postgres, 2k MSSQL, 1k for SQLite)
|
|
|
|
|
let batchSize = (WIKI.config.db.type !== 'sqlite') ? 100 : 60
|
|
|
|
|
|
|
|
|
|
for (const page of pages) {
|
|
|
|
|
const pagePaths = page.path.split('/')
|
|
|
|
@ -44,6 +48,12 @@ module.exports = async (pageId) => {
|
|
|
|
|
ancestors: JSON.stringify(ancestors)
|
|
|
|
|
})
|
|
|
|
|
parentId = pik
|
|
|
|
|
if (tree.length % batchSize === 0) {
|
|
|
|
|
let chunk = tree.slice(numberOfBatchesSaved * batchSize, (numberOfBatchesSaved + 1) * batchSize)
|
|
|
|
|
// save the current chunk
|
|
|
|
|
await WIKI.models.knex.table('pageTree').insert(chunk)
|
|
|
|
|
numberOfBatchesSaved++
|
|
|
|
|
}
|
|
|
|
|
} else if (isFolder && !found.isFolder) {
|
|
|
|
|
found.isFolder = true
|
|
|
|
|
parentId = found.id
|
|
|
|
@ -54,19 +64,12 @@ module.exports = async (pageId) => {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
await WIKI.models.knex.table('pageTree').truncate()
|
|
|
|
|
if (tree.length > 0) {
|
|
|
|
|
// -> Save in chunks, because of per query max parameters (35k Postgres, 2k MSSQL, 1k for SQLite)
|
|
|
|
|
if ((WIKI.config.db.type !== 'sqlite')) {
|
|
|
|
|
for (const chunk of _.chunk(tree, 100)) {
|
|
|
|
|
// if there are any additional records present after the latest batch was saved
|
|
|
|
|
if (tree.length % batchSize !== 0) {
|
|
|
|
|
let chunk = tree.slice(numberOfBatchesSaved * batchSize, tree.length)
|
|
|
|
|
// save the last chunk
|
|
|
|
|
await WIKI.models.knex.table('pageTree').insert(chunk)
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
for (const chunk of _.chunk(tree, 60)) {
|
|
|
|
|
await WIKI.models.knex.table('pageTree').insert(chunk)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
await WIKI.models.knex.destroy()
|
|
|
|
|
|
|
|
|
|