mirror of https://github.com/requarks/wiki
parent
714aa1eb0f
commit
ce766ce3e9
@ -1,15 +0,0 @@
|
||||
const crypto = require('crypto')
|
||||
const path = require('path')
|
||||
|
||||
module.exports = {
|
||||
/**
|
||||
* Generate unique hash from page
|
||||
*/
|
||||
generateHash(assetPath) {
|
||||
return crypto.createHash('sha1').update(assetPath).digest('hex')
|
||||
},
|
||||
|
||||
getPathInfo(assetPath) {
|
||||
return path.parse(assetPath.toLowerCase())
|
||||
}
|
||||
}
|
@ -1,76 +0,0 @@
|
||||
const Model = require('objection').Model
|
||||
const _ = require('lodash')
|
||||
|
||||
/**
|
||||
* 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.db.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.db.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.db.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
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 1.2 KiB |
Loading…
Reference in new issue