|
|
@ -310,20 +310,15 @@ module.exports = { |
|
|
|
subtitle: content.meta.subtitle || '', |
|
|
|
parentTitle: content.parent.title || '', |
|
|
|
parentPath: parentPath, |
|
|
|
isDirectory: false |
|
|
|
isDirectory: false, |
|
|
|
isEntry: true |
|
|
|
}, { |
|
|
|
new: true, |
|
|
|
upsert: true |
|
|
|
}) |
|
|
|
}).then(result => { |
|
|
|
return db.Entry.distinct('parentPath', { parentPath: { $ne: '' } }).then(allPaths => { |
|
|
|
if (allPaths.length > 0) { |
|
|
|
return db.Entry.updateMany({ _id: { $in: allPaths } }, { $set: { isDirectory: true } }).then(() => { |
|
|
|
return result |
|
|
|
}) |
|
|
|
} else { |
|
|
|
return result |
|
|
|
} |
|
|
|
return self.updateTreeInfo().then(() => { |
|
|
|
return result |
|
|
|
}) |
|
|
|
}).catch(err => { |
|
|
|
winston.error(err) |
|
|
@ -331,6 +326,28 @@ module.exports = { |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* Update tree info for all directory and parent entries |
|
|
|
* |
|
|
|
* @returns {Promise<Boolean>} Promise of the operation |
|
|
|
*/ |
|
|
|
updateTreeInfo () { |
|
|
|
return db.Entry.distinct('parentPath', { parentPath: { $ne: '' } }).then(allPaths => { |
|
|
|
if (allPaths.length > 0) { |
|
|
|
return Promise.map(allPaths, pathItem => { |
|
|
|
let parentPath = _.chain(pathItem).split('/').initial().join('/').value() |
|
|
|
let guessedTitle = _.chain(pathItem).split('/').last().startCase().value() |
|
|
|
return db.Entry.update({ _id: pathItem }, { |
|
|
|
$set: { isDirectory: true }, |
|
|
|
$setOnInsert: { isEntry: false, title: guessedTitle, parentPath } |
|
|
|
}, { upsert: true }) |
|
|
|
}) |
|
|
|
} else { |
|
|
|
return true |
|
|
|
} |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* Create a new document |
|
|
|
* |
|
|
@ -428,6 +445,6 @@ module.exports = { |
|
|
|
* @return {Promise<Array>} List of entries |
|
|
|
*/ |
|
|
|
getFromTree (basePath) { |
|
|
|
return db.Entry.find({ parentPath: basePath }) |
|
|
|
return db.Entry.find({ parentPath: basePath }, 'title parentPath isDirectory isEntry').sort({ title: 'asc' }) |
|
|
|
} |
|
|
|
} |