n8n-nodes-smartsuite
Version:
n8n community node for SmartSuite
55 lines • 2.64 kB
JavaScript
;
// src/nodes/SmartSuite/actions/record/createRecord.operation.ts
Object.defineProperty(exports, "__esModule", { value: true });
exports.description = void 0;
exports.execute = execute;
const n8n_workflow_1 = require("n8n-workflow");
const utils_1 = require("../../helpers/utils");
const smartSuiteApi_1 = require("../../transport/smartSuiteApi");
const validation_1 = require("../../helpers/validation");
const resourceInputs_1 = require("../../shared/resourceInputs");
exports.description = [
{
...resourceInputs_1.solutionInput,
displayOptions: { show: { resource: ['record'], operation: ['createRecord'] } },
},
{
...resourceInputs_1.tableInput,
displayOptions: { show: { resource: ['record'], operation: ['createRecord'] } },
},
{
...resourceInputs_1.fieldsInput,
displayOptions: { show: { resource: ['record'], operation: ['createRecord'] } },
},
];
async function execute() {
const solutionId = await validation_1.getSolutionId.call(this, 0);
const tableId = await validation_1.getTableId.call(this, 0);
(0, utils_1.debugLog)('[Record] createRecord.execute called', this.getNode().parameters);
const items = this.getInputData();
const returnData = [];
for (let i = 0; i < items.length; i++) {
const fieldsArr = this.getNodeParameter('fieldsUi.fieldsValues', i, []);
if (!fieldsArr.length) {
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'You must provide at least one field to create a record.', { itemIndex: i });
}
// Prevent setting system fields
for (const { field } of fieldsArr) {
const slug = (0, utils_1.asIdString)(field);
if ((0, utils_1.isReservedField)(slug)) {
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Cannot set system field “${slug}”.`, { itemIndex: i });
}
}
const payload = fieldsArr.reduce((obj, { field, value }) => {
obj[(0, utils_1.asIdString)(field)] = value;
return obj;
}, {});
(0, utils_1.debugLog)('[Record] createRecord.request', { solutionId, tableId, payload });
const response = await smartSuiteApi_1.apiRequest.call(this, 'POST', `/applications/${tableId}/records/`, payload);
(0, utils_1.debugLog)('[Record] createRecord.response', response);
const result = (response && typeof response === 'object') ? response : {};
returnData.push(...this.helpers.returnJsonArray([result]));
}
return returnData;
}
//# sourceMappingURL=createRecord.operation.js.map