feat: asset add/rename/remove + dump action for git and disk modules
This commit is contained in:
@@ -39,7 +39,7 @@ module.exports = class AssetFolder extends Model {
|
||||
*
|
||||
* @param {Number} folderId Id of the folder
|
||||
*/
|
||||
static async getHierarchy(folderId) {
|
||||
static async getHierarchy (folderId) {
|
||||
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')
|
||||
@@ -48,4 +48,22 @@ module.exports = class AssetFolder extends Model {
|
||||
// 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
|
||||
}
|
||||
}
|
||||
|
@@ -96,7 +96,7 @@ module.exports = class Asset extends Model {
|
||||
mime: opts.mimetype,
|
||||
fileSize: opts.size,
|
||||
folderId: opts.folderId,
|
||||
authorId: opts.userId
|
||||
authorId: opts.user.id
|
||||
}
|
||||
|
||||
// Save asset data
|
||||
@@ -119,20 +119,27 @@ module.exports = class Asset extends Model {
|
||||
data: fileBuffer
|
||||
})
|
||||
}
|
||||
|
||||
// Move temp upload to cache
|
||||
await fs.move(opts.path, path.join(process.cwd(), `data/cache/${fileHash}.dat`), { overwrite: true })
|
||||
|
||||
// Add to Storage
|
||||
if (!opts.skipStorage) {
|
||||
await WIKI.models.storage.assetEvent({
|
||||
event: 'uploaded',
|
||||
asset: {
|
||||
...asset,
|
||||
path: await asset.getAssetPath(),
|
||||
data: fileBuffer,
|
||||
authorId: opts.user.id,
|
||||
authorName: opts.user.name,
|
||||
authorEmail: opts.user.email
|
||||
}
|
||||
})
|
||||
}
|
||||
} catch (err) {
|
||||
WIKI.logger.warn(err)
|
||||
}
|
||||
|
||||
// Move temp upload to cache
|
||||
await fs.move(opts.path, path.join(process.cwd(), `data/cache/${fileHash}.dat`), { overwrite: true })
|
||||
|
||||
// Add to Storage
|
||||
if (!opts.skipStorage) {
|
||||
await WIKI.models.storage.assetEvent({
|
||||
event: 'uploaded',
|
||||
asset
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
static async getAsset(assetPath, res) {
|
||||
|
Reference in New Issue
Block a user