87 lines
2.0 KiB
JavaScript
Raw Normal View History

'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');
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');
// TODO: wrap with a transaction
2022-04-12 16:32:05 +02:00
const enrichFolder = pipeAsync(setPathAndUID, setCreatorFields({ user }));
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),
};
},
// 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,
};
},
};