n8n
Version:
n8n Workflow Automation Tool
85 lines • 4.68 kB
JavaScript
;
const api_types_1 = require("@n8n/api-types");
const di_1 = require("@n8n/di");
const bad_request_error_1 = require("../../../../errors/response-errors/bad-request.error");
const conflict_error_1 = require("../../../../errors/response-errors/conflict.error");
const data_table_service_1 = require("../../../../modules/data-table/data-table.service");
const data_table_column_name_conflict_error_1 = require("../../../../modules/data-table/errors/data-table-column-name-conflict.error");
const data_table_system_column_name_conflict_error_1 = require("../../../../modules/data-table/errors/data-table-system-column-name-conflict.error");
const global_middleware_1 = require("../../shared/middlewares/global.middleware");
const handleError = (error) => {
if (error instanceof data_table_column_name_conflict_error_1.DataTableColumnNameConflictError ||
error instanceof data_table_system_column_name_conflict_error_1.DataTableSystemColumnNameConflictError) {
throw new conflict_error_1.ConflictError(error.message);
}
throw error;
};
const dataTableColumnsHandlers = {
listDataTableColumns: [
(0, global_middleware_1.publicApiScope)('dataTableColumn:read'),
(0, global_middleware_1.projectScope)('dataTable:readColumn', 'dataTable'),
async (req, res) => {
const { dataTableId } = req.params;
const projectId = await di_1.Container.get(data_table_service_1.DataTableService).getProjectIdForDataTable(dataTableId);
return res.json(await di_1.Container.get(data_table_service_1.DataTableService).getColumns(dataTableId, projectId));
},
],
createDataTableColumn: [
(0, global_middleware_1.publicApiScope)('dataTableColumn:create'),
(0, global_middleware_1.projectScope)('dataTable:writeColumn', 'dataTable'),
async (req, res) => {
const { dataTableId } = req.params;
const payload = api_types_1.AddDataTableColumnDto.safeParse(req.body);
if (!payload.success) {
throw new bad_request_error_1.BadRequestError(payload.error.errors[0]?.message);
}
const projectId = await di_1.Container.get(data_table_service_1.DataTableService).getProjectIdForDataTable(dataTableId);
try {
const column = await di_1.Container.get(data_table_service_1.DataTableService).addColumn(dataTableId, projectId, payload.data);
return res.status(201).json(column);
}
catch (error) {
return handleError(error);
}
},
],
deleteDataTableColumn: [
(0, global_middleware_1.publicApiScope)('dataTableColumn:delete'),
(0, global_middleware_1.projectScope)('dataTable:writeColumn', 'dataTable'),
async (req, res) => {
const { dataTableId, columnId } = req.params;
const projectId = await di_1.Container.get(data_table_service_1.DataTableService).getProjectIdForDataTable(dataTableId);
await di_1.Container.get(data_table_service_1.DataTableService).deleteColumn(dataTableId, projectId, columnId);
return res.status(204).send();
},
],
updateDataTableColumn: [
(0, global_middleware_1.publicApiScope)('dataTableColumn:update'),
(0, global_middleware_1.projectScope)('dataTable:writeColumn', 'dataTable'),
async (req, res) => {
try {
const { dataTableId, columnId } = req.params;
const payload = api_types_1.updateDataTableColumnSchema.safeParse(req.body);
if (!payload.success) {
throw new bad_request_error_1.BadRequestError(payload.error.errors[0]?.message);
}
const { name, index } = payload.data;
const service = di_1.Container.get(data_table_service_1.DataTableService);
const projectId = await service.getProjectIdForDataTable(dataTableId);
if (name !== undefined) {
await service.renameColumn(dataTableId, projectId, columnId, { name });
}
if (index !== undefined) {
await service.moveColumn(dataTableId, projectId, columnId, { targetIndex: index });
}
const updatedColumn = await service.getColumnById({ projectId, dataTableId, columnId });
return res.json(updatedColumn);
}
catch (error) {
return handleError(error);
}
},
],
};
module.exports = dataTableColumnsHandlers;
//# sourceMappingURL=data-tables.columns.handler.js.map