| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | 
							- const Model = require('objection').Model
 
- const _ = require('lodash')
 
- /* global WIKI */
 
- /**
 
-  * Users model
 
-  */
 
- module.exports = class AssetFolder extends Model {
 
-   static get tableName() { return 'assetFolders' }
 
-   static get jsonSchema () {
 
-     return {
 
-       type: 'object',
 
-       properties: {
 
-         id: {type: 'integer'},
 
-         name: {type: 'string'},
 
-         slug: {type: 'string'}
 
-       }
 
-     }
 
-   }
 
-   static get relationMappings() {
 
-     return {
 
-       parent: {
 
-         relation: Model.BelongsToOneRelation,
 
-         modelClass: AssetFolder,
 
-         join: {
 
-           from: 'assetFolders.folderId',
 
-           to: 'assetFolders.id'
 
-         }
 
-       }
 
-     }
 
-   }
 
-   /**
 
-    * Get full folder hierarchy starting from specified folder to root
 
-    *
 
-    * @param {Number} folderId Id of the folder
 
-    */
 
-   static async getHierarchy (folderId) {
 
-     let hier
 
-     if (WIKI.config.db.type === 'mssql') {
 
-       hier = await WIKI.models.knex.with('ancestors', qb => {
 
-         qb.select('id', 'name', 'slug', 'parentId').from('assetFolders').where('id', folderId).unionAll(sqb => {
 
-           sqb.select('a.id', 'a.name', 'a.slug', 'a.parentId').from('assetFolders AS a').join('ancestors', 'ancestors.parentId', 'a.id')
 
-         })
 
-       }).select('*').from('ancestors')
 
-     }
 
-     else {
 
-       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)
 
-   }
 
-   /**
 
-    * Get full folder paths
 
-    */
 
-   static async getAllPaths () {
 
-     const all = await WIKI.models.assetFolders.query()
 
-     let folders = {}
 
-     all.forEach(fld => {
 
-       _.set(folders, fld.id, fld.slug)
 
-       let parentId = fld.parentId
 
-       while (parentId !== null || parentId > 0) {
 
-         const parent = _.find(all, ['id', parentId])
 
-         _.set(folders, fld.id, `${parent.slug}/${_.get(folders, fld.id)}`)
 
-         parentId = parent.parentId
 
-       }
 
-     })
 
-     return folders
 
-   }
 
- }
 
 
  |