UNPKG

n8n-nodes-inflow-crm

Version:

Official Inflow CRM integration for n8n. Create, update, search records and handle webhooks with dynamic field support.

74 lines (73 loc) 3.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.executeGetProcessesAction = void 0; const api_1 = require("../../lib/api"); const endpoints_1 = require("../../lib/endpoints"); const logger_1 = require("../../lib/logger"); async function executeGetProcessesAction(itemIndex, moduleName) { // Context and parameter validation if (!this || typeof this.getNodeParameter !== 'function') { throw new Error('Context error: IExecuteFunctions context is required'); } if (!moduleName || typeof moduleName !== 'string') { throw new Error('module name is required'); } // Restrict module parameter to only 'potential' and 'order' values if (moduleName !== 'potential' && moduleName !== 'order') { throw new Error(`Unsupported module "${moduleName}". Only "potential" and "order" modules support processes.`); } logger_1.actionsLogger.info(`Getting processes for module: ${moduleName}`); try { // Build request body for POST /api/getProcessesForModule const requestBody = { module: moduleName, }; logger_1.actionsLogger.info('Request body:', JSON.stringify(requestBody, null, 2)); let response; try { response = await (0, api_1.inflowApiRequest)(this, 'POST', endpoints_1.Endpoints.GET_PROCESSES_FOR_MODULE, requestBody); } catch (apiError) { logger_1.actionsLogger.error('API request failed with error:', apiError); if (apiError?.error && apiError.error.code) { throw new Error(`[${apiError.error.code}] ${apiError.error.message}`); } throw apiError; } logger_1.actionsLogger.info('API Response:', JSON.stringify(response, null, 2)); // Expect { data: [...] } format if (response && typeof response === 'object' && 'data' in response) { const { data } = response; // Handle empty process lists gracefully if (!Array.isArray(data)) { logger_1.actionsLogger.warn('Get processes returned non-array data for', moduleName, '.'); return [{ json: { success: true, data: [] }, pairedItem: { item: itemIndex } }]; } // Format response to include process id, label, and stagesNames const formattedData = data.map(process => ({ id: process.id, systemLabel: process.systemLabel, stagesNames: process.stagesNames || [], })); // Return the complete response with formatted data return [{ json: { success: true, data: formattedData, count: formattedData.length }, pairedItem: { item: itemIndex } }]; } logger_1.actionsLogger.error('Unexpected API response format:', response); throw new Error('API returned unexpected response format'); } catch (error) { logger_1.actionsLogger.error('Error getting processes:', error); if (error?.error && error.error.code) { throw new Error(`[${error.error.code}] ${error.error.message}`); } throw new Error(`Failed to get processes for "${moduleName}": ${error.message || 'unknown error'}`); } } exports.executeGetProcessesAction = executeGetProcessesAction;