141 lines
3.4 KiB
JavaScript
Raw Normal View History

'use strict';
2022-05-05 18:44:50 +02:00
const { defaultsDeep } = require('lodash/fp');
const { convertQueryParams } = require('@strapi/utils');
const { getService } = require('../utils');
2022-05-13 16:10:18 +02:00
const { FOLDER_MODEL_UID } = require('../constants');
2022-04-29 09:51:55 +02:00
const { validateCreateFolder, validateUpdateFolder } = require('./validation/admin/folder');
module.exports = {
2022-05-05 18:44:50 +02:00
async findOne(ctx) {
const {
params: { id },
} = ctx.request;
const permissionsManager = strapi.admin.services.permission.createPermissionsManager({
ability: ctx.state.userAbility,
model: FOLDER_MODEL_UID,
});
2023-08-11 13:13:44 +02:00
await permissionsManager.validateQuery(ctx.query);
const query = await permissionsManager.sanitizeQuery(ctx.query);
const { results } = await strapi.db.query(FOLDER_MODEL_UID).findPage(
convertQueryParams.transformParamsToQuery(
FOLDER_MODEL_UID,
defaultsDeep(
{
filters: { id },
populate: {
children: {
count: true,
},
files: {
count: true,
},
2022-06-14 09:32:45 +01:00
},
},
query
)
)
);
2022-05-05 18:44:50 +02:00
if (results.length === 0) {
return ctx.notFound('folder not found');
}
ctx.body = {
data: await permissionsManager.sanitizeOutput(results[0]),
};
},
async find(ctx) {
const permissionsManager = strapi.admin.services.permission.createPermissionsManager({
ability: ctx.state.userAbility,
2022-05-13 16:10:18 +02:00
model: FOLDER_MODEL_UID,
});
2023-08-11 17:08:03 +02:00
await permissionsManager.validateQuery(ctx.query);
const query = await permissionsManager.sanitizeQuery(ctx.query);
const results = await strapi.db.query(FOLDER_MODEL_UID).findMany(
convertQueryParams.transformParamsToQuery(
FOLDER_MODEL_UID,
defaultsDeep(
{
populate: {
children: {
count: true,
},
files: {
count: true,
},
2022-05-05 18:44:50 +02:00
},
2022-05-13 16:10:18 +02:00
},
query
)
)
);
ctx.body = {
2022-05-19 14:47:23 +02:00
data: await permissionsManager.sanitizeOutput(results),
};
},
async create(ctx) {
const { user } = ctx.state;
const { body } = ctx.request;
await validateCreateFolder(body);
const folderService = getService('folder');
const folder = await folderService.create(body, { user });
const permissionsManager = strapi.admin.services.permission.createPermissionsManager({
ability: ctx.state.userAbility,
2022-05-13 16:10:18 +02:00
model: FOLDER_MODEL_UID,
});
ctx.body = {
data: await permissionsManager.sanitizeOutput(folder),
};
},
2022-04-07 18:00:21 +02:00
2022-04-29 09:51:55 +02:00
async update(ctx) {
const { user } = ctx.state;
const {
body,
params: { id },
} = ctx.request;
const permissionsManager = strapi.admin.services.permission.createPermissionsManager({
ability: ctx.state.userAbility,
2022-05-13 16:10:18 +02:00
model: FOLDER_MODEL_UID,
2022-04-29 09:51:55 +02:00
});
2022-05-02 16:31:27 +02:00
await validateUpdateFolder(id)(body);
2022-04-29 09:51:55 +02:00
const folderService = getService('folder');
2022-04-29 09:51:55 +02:00
const updatedFolder = await folderService.update(id, body, { user });
2022-04-29 09:51:55 +02:00
2022-05-05 18:44:50 +02:00
if (!updatedFolder) {
return ctx.notFound('folder not found');
}
2022-04-29 09:51:55 +02:00
ctx.body = {
data: await permissionsManager.sanitizeOutput(updatedFolder),
};
},
async getStructure(ctx) {
const { getStructure } = getService('folder');
2022-04-07 18:00:21 +02:00
const structure = await getStructure();
2022-04-07 18:00:21 +02:00
ctx.body = {
data: structure,
2022-04-07 18:00:21 +02:00
};
},
};