2022-03-22 18:19:46 +01:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
const { setCreatorFields, pipeAsync } = require('@strapi/utils');
|
|
|
|
const { getService } = require('../utils');
|
2022-04-06 12:02:47 +02:00
|
|
|
const { validateCreateFolder, validateDeleteManyFolders } = require('./validation/admin/folder');
|
2022-03-22 18:19:46 +01:00
|
|
|
|
|
|
|
const folderModel = 'plugin::upload.folder';
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
async find(ctx) {
|
|
|
|
const permissionsManager = strapi.admin.services.permission.createPermissionsManager({
|
|
|
|
ability: ctx.state.userAbility,
|
|
|
|
model: folderModel,
|
|
|
|
});
|
|
|
|
|
|
|
|
const { results, pagination } = await strapi.entityService.findWithRelationCounts(folderModel, {
|
|
|
|
...ctx.query,
|
|
|
|
populate: {
|
|
|
|
children: {
|
|
|
|
count: true,
|
|
|
|
},
|
|
|
|
files: {
|
|
|
|
count: true,
|
|
|
|
},
|
|
|
|
parent: true,
|
|
|
|
createdBy: true,
|
|
|
|
updatedBy: true,
|
|
|
|
},
|
|
|
|
});
|
|
|
|
|
|
|
|
ctx.body = {
|
|
|
|
results: await permissionsManager.sanitizeOutput(results),
|
|
|
|
pagination,
|
|
|
|
};
|
|
|
|
},
|
|
|
|
async create(ctx) {
|
|
|
|
const { user } = ctx.state;
|
|
|
|
const { body, query } = ctx.request;
|
|
|
|
|
|
|
|
await validateCreateFolder(body);
|
|
|
|
|
2022-04-12 16:32:05 +02:00
|
|
|
const { setPathAndUID } = getService('folder');
|
2022-03-22 18:19:46 +01:00
|
|
|
|
|
|
|
// TODO: wrap with a transaction
|
2022-04-12 16:32:05 +02:00
|
|
|
const enrichFolder = pipeAsync(setPathAndUID, setCreatorFields({ user }));
|
2022-03-22 18:19:46 +01:00
|
|
|
const enrichedFolder = await enrichFolder(body);
|
|
|
|
|
|
|
|
const folder = await strapi.entityService.create(folderModel, {
|
|
|
|
...query,
|
|
|
|
data: enrichedFolder,
|
|
|
|
});
|
|
|
|
|
|
|
|
const permissionsManager = strapi.admin.services.permission.createPermissionsManager({
|
|
|
|
ability: ctx.state.userAbility,
|
|
|
|
model: folderModel,
|
|
|
|
});
|
|
|
|
|
|
|
|
ctx.body = {
|
|
|
|
data: await permissionsManager.sanitizeOutput(folder),
|
|
|
|
};
|
|
|
|
},
|
2022-04-04 14:32:08 +02:00
|
|
|
// deleteMany WIP
|
|
|
|
async deleteMany(ctx) {
|
|
|
|
const { body } = ctx.request;
|
|
|
|
|
|
|
|
await validateDeleteManyFolders(body);
|
|
|
|
|
|
|
|
const { deleteByIds } = getService('folder');
|
|
|
|
|
|
|
|
const deletedFolders = await deleteByIds(body.ids);
|
|
|
|
|
|
|
|
ctx.body = {
|
|
|
|
data: deletedFolders,
|
|
|
|
};
|
|
|
|
},
|
2022-04-07 18:00:21 +02:00
|
|
|
|
|
|
|
async getTree(ctx) {
|
|
|
|
const { getTree } = getService('folder');
|
|
|
|
|
|
|
|
const tree = await getTree();
|
|
|
|
|
|
|
|
ctx.body = {
|
|
|
|
data: tree,
|
|
|
|
};
|
|
|
|
},
|
2022-03-22 18:19:46 +01:00
|
|
|
};
|