n8n
Version:
n8n Workflow Automation Tool
442 lines • 20 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DataTableController = void 0;
const api_types_1 = require("@n8n/api-types");
const decorators_1 = require("@n8n/decorators");
const response_error_1 = require("../../errors/response-errors/abstract/response.error");
const bad_request_error_1 = require("../../errors/response-errors/bad-request.error");
const conflict_error_1 = require("../../errors/response-errors/conflict.error");
const internal_server_error_1 = require("../../errors/response-errors/internal-server.error");
const not_found_error_1 = require("../../errors/response-errors/not-found.error");
const data_table_service_1 = require("./data-table.service");
const data_table_column_name_conflict_error_1 = require("./errors/data-table-column-name-conflict.error");
const data_table_name_conflict_error_1 = require("./errors/data-table-name-conflict.error");
const data_table_not_found_error_1 = require("./errors/data-table-not-found.error");
const data_table_system_column_name_conflict_error_1 = require("./errors/data-table-system-column-name-conflict.error");
const data_table_validation_error_1 = require("./errors/data-table-validation.error");
const project_service_ee_1 = require("../../services/project.service.ee");
let DataTableController = class DataTableController {
constructor(dataTableService, projectService) {
this.dataTableService = dataTableService;
this.projectService = projectService;
}
handleDataTableColumnOperationError(e) {
if (e instanceof data_table_column_name_conflict_error_1.DataTableColumnNameConflictError ||
e instanceof data_table_system_column_name_conflict_error_1.DataTableSystemColumnNameConflictError ||
e instanceof data_table_name_conflict_error_1.DataTableNameConflictError) {
throw new conflict_error_1.ConflictError(e.message);
}
if (e instanceof data_table_validation_error_1.DataTableValidationError) {
throw new bad_request_error_1.BadRequestError(e.message);
}
if (e instanceof response_error_1.ResponseError) {
throw e;
}
if (e instanceof Error) {
throw new internal_server_error_1.InternalServerError(e.message, e);
}
throw e;
}
async validateProjectExists(req, res, next) {
try {
const { projectId } = req.params;
await this.projectService.getProject(projectId);
next();
}
catch (e) {
res.status(404).send('Project not found');
return;
}
}
async createDataTable(req, _res, dto) {
try {
return await this.dataTableService.createDataTable(req.params.projectId, dto);
}
catch (e) {
if (!(e instanceof Error)) {
throw e;
}
else if (e instanceof data_table_name_conflict_error_1.DataTableNameConflictError) {
throw new conflict_error_1.ConflictError(e.message);
}
else {
throw new internal_server_error_1.InternalServerError(e.message, e);
}
}
}
async listProjectDataTables(req, _res, payload) {
const providedFilter = payload?.filter ?? {};
return await this.dataTableService.getManyAndCount({
...payload,
filter: { ...providedFilter, projectId: req.params.projectId },
});
}
async updateDataTable(req, _res, dataTableId, dto) {
try {
return await this.dataTableService.updateDataTable(dataTableId, req.params.projectId, dto);
}
catch (e) {
if (e instanceof data_table_not_found_error_1.DataTableNotFoundError) {
throw new not_found_error_1.NotFoundError(e.message);
}
else if (e instanceof data_table_name_conflict_error_1.DataTableNameConflictError) {
throw new conflict_error_1.ConflictError(e.message);
}
else if (e instanceof Error) {
throw new internal_server_error_1.InternalServerError(e.message, e);
}
else {
throw e;
}
}
}
async deleteDataTable(req, _res, dataTableId) {
try {
return await this.dataTableService.deleteDataTable(dataTableId, req.params.projectId);
}
catch (e) {
if (e instanceof data_table_not_found_error_1.DataTableNotFoundError) {
throw new not_found_error_1.NotFoundError(e.message);
}
else if (e instanceof Error) {
throw new internal_server_error_1.InternalServerError(e.message, e);
}
else {
throw e;
}
}
}
async getColumns(req, _res, dataTableId) {
try {
return await this.dataTableService.getColumns(dataTableId, req.params.projectId);
}
catch (e) {
if (e instanceof data_table_not_found_error_1.DataTableNotFoundError) {
throw new not_found_error_1.NotFoundError(e.message);
}
else if (e instanceof Error) {
throw new internal_server_error_1.InternalServerError(e.message, e);
}
else {
throw e;
}
}
}
async addColumn(req, _res, dataTableId, dto) {
try {
return await this.dataTableService.addColumn(dataTableId, req.params.projectId, dto);
}
catch (e) {
this.handleDataTableColumnOperationError(e);
}
}
async deleteColumn(req, _res, dataTableId, columnId) {
try {
return await this.dataTableService.deleteColumn(dataTableId, req.params.projectId, columnId);
}
catch (e) {
this.handleDataTableColumnOperationError(e);
}
}
async moveColumn(req, _res, dataTableId, columnId, dto) {
try {
return await this.dataTableService.moveColumn(dataTableId, req.params.projectId, columnId, dto);
}
catch (e) {
this.handleDataTableColumnOperationError(e);
}
}
async renameColumn(req, _res, dataTableId, columnId, dto) {
try {
return await this.dataTableService.renameColumn(dataTableId, req.params.projectId, columnId, dto);
}
catch (e) {
this.handleDataTableColumnOperationError(e);
}
}
async getDataTableRows(req, _res, dataTableId, dto) {
try {
return await this.dataTableService.getManyRowsAndCount(dataTableId, req.params.projectId, dto);
}
catch (e) {
if (e instanceof data_table_not_found_error_1.DataTableNotFoundError) {
throw new not_found_error_1.NotFoundError(e.message);
}
else if (e instanceof Error) {
throw new internal_server_error_1.InternalServerError(e.message, e);
}
else {
throw e;
}
}
}
async downloadDataTableCsv(req, _res) {
try {
const { projectId, dataTableId } = req.params;
const { csvContent, dataTableName } = await this.dataTableService.generateDataTableCsv(dataTableId, projectId);
return {
csvContent,
dataTableName,
};
}
catch (e) {
if (e instanceof data_table_not_found_error_1.DataTableNotFoundError) {
throw new not_found_error_1.NotFoundError(e.message);
}
else if (e instanceof Error) {
throw new internal_server_error_1.InternalServerError(e.message, e);
}
else {
throw e;
}
}
}
async appendDataTableRows(req, _res, dataTableId, dto) {
try {
return await this.dataTableService.insertRows(dataTableId, req.params.projectId, dto.data, dto.returnType);
}
catch (e) {
if (e instanceof data_table_not_found_error_1.DataTableNotFoundError) {
throw new not_found_error_1.NotFoundError(e.message);
}
else if (e instanceof data_table_validation_error_1.DataTableValidationError) {
throw new bad_request_error_1.BadRequestError(e.message);
}
else if (e instanceof Error) {
throw new internal_server_error_1.InternalServerError(e.message, e);
}
else {
throw e;
}
}
}
async upsertDataTableRow(req, _res, dataTableId, dto) {
try {
const dryRun = dto.dryRun;
if (dryRun) {
return await this.dataTableService.upsertRow(dataTableId, req.params.projectId, dto, true, dryRun);
}
const returnData = dto.returnData;
if (returnData) {
return await this.dataTableService.upsertRow(dataTableId, req.params.projectId, dto, returnData, dryRun);
}
return await this.dataTableService.upsertRow(dataTableId, req.params.projectId, dto, returnData, dryRun);
}
catch (e) {
if (e instanceof data_table_not_found_error_1.DataTableNotFoundError) {
throw new not_found_error_1.NotFoundError(e.message);
}
else if (e instanceof data_table_validation_error_1.DataTableValidationError) {
throw new bad_request_error_1.BadRequestError(e.message);
}
else if (e instanceof Error) {
throw new internal_server_error_1.InternalServerError(e.message, e);
}
else {
throw e;
}
}
}
async updateDataTableRows(req, _res, dataTableId, dto) {
try {
const dryRun = dto.dryRun;
if (dryRun) {
return await this.dataTableService.updateRows(dataTableId, req.params.projectId, dto, true, dryRun);
}
const returnData = dto.returnData;
if (returnData) {
return await this.dataTableService.updateRows(dataTableId, req.params.projectId, dto, returnData, dryRun);
}
return await this.dataTableService.updateRows(dataTableId, req.params.projectId, dto, returnData, dryRun);
}
catch (e) {
if (e instanceof data_table_not_found_error_1.DataTableNotFoundError) {
throw new not_found_error_1.NotFoundError(e.message);
}
else if (e instanceof data_table_validation_error_1.DataTableValidationError) {
throw new bad_request_error_1.BadRequestError(e.message);
}
else if (e instanceof Error) {
throw new internal_server_error_1.InternalServerError(e.message, e);
}
else {
throw e;
}
}
}
async deleteDataTableRows(req, _res, dataTableId, dto) {
try {
return await this.dataTableService.deleteRows(dataTableId, req.params.projectId, dto, dto.returnData);
}
catch (e) {
if (e instanceof data_table_not_found_error_1.DataTableNotFoundError) {
throw new not_found_error_1.NotFoundError(e.message);
}
else if (e instanceof data_table_validation_error_1.DataTableValidationError) {
throw new bad_request_error_1.BadRequestError(e.message);
}
else if (e instanceof Error) {
throw new internal_server_error_1.InternalServerError(e.message, e);
}
else {
throw e;
}
}
}
};
exports.DataTableController = DataTableController;
__decorate([
(0, decorators_1.Middleware)(),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object, Object, Function]),
__metadata("design:returntype", Promise)
], DataTableController.prototype, "validateProjectExists", null);
__decorate([
(0, decorators_1.Post)('/'),
(0, decorators_1.ProjectScope)('dataTable:create'),
__param(2, decorators_1.Body),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object, Object, api_types_1.CreateDataTableDto]),
__metadata("design:returntype", Promise)
], DataTableController.prototype, "createDataTable", null);
__decorate([
(0, decorators_1.Get)('/'),
(0, decorators_1.ProjectScope)('dataTable:listProject'),
__param(2, decorators_1.Query),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object, Object, api_types_1.ListDataTableQueryDto]),
__metadata("design:returntype", Promise)
], DataTableController.prototype, "listProjectDataTables", null);
__decorate([
(0, decorators_1.Patch)('/:dataTableId'),
(0, decorators_1.ProjectScope)('dataTable:update'),
__param(2, (0, decorators_1.Param)('dataTableId')),
__param(3, decorators_1.Body),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object, Object, String, api_types_1.UpdateDataTableDto]),
__metadata("design:returntype", Promise)
], DataTableController.prototype, "updateDataTable", null);
__decorate([
(0, decorators_1.Delete)('/:dataTableId'),
(0, decorators_1.ProjectScope)('dataTable:delete'),
__param(2, (0, decorators_1.Param)('dataTableId')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object, Object, String]),
__metadata("design:returntype", Promise)
], DataTableController.prototype, "deleteDataTable", null);
__decorate([
(0, decorators_1.Get)('/:dataTableId/columns'),
(0, decorators_1.ProjectScope)('dataTable:read'),
__param(2, (0, decorators_1.Param)('dataTableId')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object, Object, String]),
__metadata("design:returntype", Promise)
], DataTableController.prototype, "getColumns", null);
__decorate([
(0, decorators_1.Post)('/:dataTableId/columns'),
(0, decorators_1.ProjectScope)('dataTable:update'),
__param(2, (0, decorators_1.Param)('dataTableId')),
__param(3, decorators_1.Body),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object, Object, String, api_types_1.AddDataTableColumnDto]),
__metadata("design:returntype", Promise)
], DataTableController.prototype, "addColumn", null);
__decorate([
(0, decorators_1.Delete)('/:dataTableId/columns/:columnId'),
(0, decorators_1.ProjectScope)('dataTable:update'),
__param(2, (0, decorators_1.Param)('dataTableId')),
__param(3, (0, decorators_1.Param)('columnId')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object, Object, String, String]),
__metadata("design:returntype", Promise)
], DataTableController.prototype, "deleteColumn", null);
__decorate([
(0, decorators_1.Patch)('/:dataTableId/columns/:columnId/move'),
(0, decorators_1.ProjectScope)('dataTable:update'),
__param(2, (0, decorators_1.Param)('dataTableId')),
__param(3, (0, decorators_1.Param)('columnId')),
__param(4, decorators_1.Body),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object, Object, String, String, api_types_1.MoveDataTableColumnDto]),
__metadata("design:returntype", Promise)
], DataTableController.prototype, "moveColumn", null);
__decorate([
(0, decorators_1.Patch)('/:dataTableId/columns/:columnId/rename'),
(0, decorators_1.ProjectScope)('dataTable:update'),
__param(2, (0, decorators_1.Param)('dataTableId')),
__param(3, (0, decorators_1.Param)('columnId')),
__param(4, decorators_1.Body),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object, Object, String, String, api_types_1.RenameDataTableColumnDto]),
__metadata("design:returntype", Promise)
], DataTableController.prototype, "renameColumn", null);
__decorate([
(0, decorators_1.Get)('/:dataTableId/rows'),
(0, decorators_1.ProjectScope)('dataTable:readRow'),
__param(2, (0, decorators_1.Param)('dataTableId')),
__param(3, decorators_1.Query),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object, Object, String, api_types_1.ListDataTableContentQueryDto]),
__metadata("design:returntype", Promise)
], DataTableController.prototype, "getDataTableRows", null);
__decorate([
(0, decorators_1.Get)('/:dataTableId/download-csv'),
(0, decorators_1.ProjectScope)('dataTable:read'),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object, Object]),
__metadata("design:returntype", Promise)
], DataTableController.prototype, "downloadDataTableCsv", null);
__decorate([
(0, decorators_1.Post)('/:dataTableId/insert'),
(0, decorators_1.ProjectScope)('dataTable:writeRow'),
__param(2, (0, decorators_1.Param)('dataTableId')),
__param(3, decorators_1.Body),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object, Object, String, api_types_1.AddDataTableRowsDto]),
__metadata("design:returntype", Promise)
], DataTableController.prototype, "appendDataTableRows", null);
__decorate([
(0, decorators_1.Post)('/:dataTableId/upsert'),
(0, decorators_1.ProjectScope)('dataTable:writeRow'),
__param(2, (0, decorators_1.Param)('dataTableId')),
__param(3, decorators_1.Body),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object, Object, String, api_types_1.UpsertDataTableRowDto]),
__metadata("design:returntype", Promise)
], DataTableController.prototype, "upsertDataTableRow", null);
__decorate([
(0, decorators_1.Patch)('/:dataTableId/rows'),
(0, decorators_1.ProjectScope)('dataTable:writeRow'),
__param(2, (0, decorators_1.Param)('dataTableId')),
__param(3, decorators_1.Body),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object, Object, String, api_types_1.UpdateDataTableRowDto]),
__metadata("design:returntype", Promise)
], DataTableController.prototype, "updateDataTableRows", null);
__decorate([
(0, decorators_1.Delete)('/:dataTableId/rows'),
(0, decorators_1.ProjectScope)('dataTable:writeRow'),
__param(2, (0, decorators_1.Param)('dataTableId')),
__param(3, decorators_1.Query),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object, Object, String, api_types_1.DeleteDataTableRowsDto]),
__metadata("design:returntype", Promise)
], DataTableController.prototype, "deleteDataTableRows", null);
exports.DataTableController = DataTableController = __decorate([
(0, decorators_1.RestController)('/projects/:projectId/data-tables'),
__metadata("design:paramtypes", [data_table_service_1.DataTableService,
project_service_ee_1.ProjectService])
], DataTableController);
//# sourceMappingURL=data-table.controller.js.map