|
@@ -1,6 +1,7 @@
|
|
|
-/* global WIKI */
|
|
|
-
|
|
|
const Model = require('objection').Model
|
|
|
+const _ = require('lodash')
|
|
|
+
|
|
|
+/* global WIKI */
|
|
|
|
|
|
/**
|
|
|
* Users model
|
|
@@ -33,11 +34,18 @@ module.exports = class AssetFolder extends Model {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Get full folder hierarchy starting from specified folder to root
|
|
|
+ *
|
|
|
+ * @param {Number} folderId Id of the folder
|
|
|
+ */
|
|
|
static async getHierarchy(folderId) {
|
|
|
- return WIKI.models.knex.withRecursive('ancestors', qb => {
|
|
|
+ const hier = await WIKI.models.knex.withRecursive('ancestors', qb => {
|
|
|
qb.select('id', 'name', 'slug', 'parentId').from('assetFolders').where('id', folderId).union(sqb => {
|
|
|
sqb.select('a.id', 'a.name', 'a.slug', 'a.parentId').from('assetFolders AS a').join('ancestors', 'ancestors.parentId', 'a.id')
|
|
|
})
|
|
|
}).select('*').from('ancestors')
|
|
|
+ // The ancestors are from children to grandparents, must reverse for correct path order.
|
|
|
+ return _.reverse(hier)
|
|
|
}
|
|
|
}
|