n8n
Version:
n8n Workflow Automation Tool
66 lines • 3.01 kB
JavaScript
const api_types_1 = require("@n8n/api-types");
const di_1 = require("@n8n/di");
const project_controller_1 = require("../../../../controllers/project.controller");
const project_repository_1 = require("../../../../databases/repositories/project.repository");
const global_middleware_1 = require("../../shared/middlewares/global.middleware");
const pagination_service_1 = require("../../shared/services/pagination.service");
module.exports = {
createProject: [
(0, global_middleware_1.isLicensed)('feat:projectRole:admin'),
(0, global_middleware_1.globalScope)('project:create'),
async (req, res) => {
const payload = api_types_1.CreateProjectDto.safeParse(req.body);
if (payload.error) {
return res.status(400).json(payload.error.errors[0]);
}
const project = await di_1.Container.get(project_controller_1.ProjectController).createProject(req, res, payload.data);
return res.status(201).json(project);
},
],
updateProject: [
(0, global_middleware_1.isLicensed)('feat:projectRole:admin'),
(0, global_middleware_1.globalScope)('project:update'),
async (req, res) => {
const payload = api_types_1.UpdateProjectDto.safeParse(req.body);
if (payload.error) {
return res.status(400).json(payload.error.errors[0]);
}
await di_1.Container.get(project_controller_1.ProjectController).updateProject(req, res, payload.data, req.params.projectId);
return res.status(204).send();
},
],
deleteProject: [
(0, global_middleware_1.isLicensed)('feat:projectRole:admin'),
(0, global_middleware_1.globalScope)('project:delete'),
async (req, res) => {
const query = api_types_1.DeleteProjectDto.safeParse(req.query);
if (query.error) {
return res.status(400).json(query.error.errors[0]);
}
await di_1.Container.get(project_controller_1.ProjectController).deleteProject(req, res, query.data, req.params.projectId);
return res.status(204).send();
},
],
getProjects: [
(0, global_middleware_1.isLicensed)('feat:projectRole:admin'),
(0, global_middleware_1.globalScope)('project:list'),
global_middleware_1.validCursor,
async (req, res) => {
const { offset = 0, limit = 100 } = req.query;
const [projects, count] = await di_1.Container.get(project_repository_1.ProjectRepository).findAndCount({
skip: offset,
take: limit,
});
return res.json({
data: projects,
nextCursor: (0, pagination_service_1.encodeNextCursor)({
offset,
limit,
numberOfTotalRecords: count,
}),
});
},
],
};
//# sourceMappingURL=projects.handler.js.map
;