UNPKG

n8n-nodes-base

Version:

Base nodes of n8n

68 lines 2.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.description = void 0; exports.execute = execute; const n8n_workflow_1 = require("n8n-workflow"); const utilities_1 = require("../../../../../utils/utilities"); const utils_1 = require("../../helpers/utils"); const common_descriptions_1 = require("../common.descriptions"); const properties = [ { displayName: 'Query', name: 'query', type: 'string', default: '', placeholder: 'e.g. SELECT id, name FROM product WHERE id < 40', required: true, description: "The SQL query to execute. You can use n8n expressions and $1, $2, $3, etc to refer to the 'Query Parameters' set in options below.", noDataExpression: true, typeOptions: { editor: 'sqlEditor', sqlDialect: 'MySQL', }, hint: 'Consider using query parameters to prevent SQL injection attacks. Add them in the options below', }, common_descriptions_1.optionsCollection, ]; const displayOptions = { show: { resource: ['database'], operation: ['executeQuery'], }, }; exports.description = (0, utilities_1.updateDisplayOptions)(displayOptions, properties); async function execute(inputItems, runQueries, nodeOptions) { let returnData = []; const items = (0, utils_1.replaceEmptyStringsByNulls)(inputItems, nodeOptions.replaceEmptyStrings); const queries = []; for (let i = 0; i < items.length; i++) { let rawQuery = this.getNodeParameter('query', i); for (const resolvable of (0, utilities_1.getResolvables)(rawQuery)) { rawQuery = rawQuery.replace(resolvable, this.evaluateExpression(resolvable, i)); } const options = this.getNodeParameter('options', i, {}); const nodeVersion = Number(nodeOptions.nodeVersion); let values; let queryReplacement = options.queryReplacement || []; if (typeof queryReplacement === 'string') { queryReplacement = queryReplacement.split(',').map((entry) => entry.trim()); } if (Array.isArray(queryReplacement)) { values = queryReplacement; } else { throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Query Replacement must be a string of comma-separated values, or an array of values', { itemIndex: i }); } const preparedQuery = (0, utils_1.prepareQueryAndReplacements)(rawQuery, nodeVersion, values); if (nodeOptions.nodeVersion >= 2.3) { const parsedNumbers = preparedQuery.values.map((value) => { return Number(value) ? Number(value) : value; }); preparedQuery.values = parsedNumbers; } queries.push(preparedQuery); } returnData = await runQueries(queries); return returnData; } //# sourceMappingURL=executeQuery.operation.js.map