UNPKG

n8n-nodes-inflow-crm

Version:

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

81 lines (80 loc) 3.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.executeGetByIdAction = void 0; const api_1 = require("../../lib/api"); const endpoints_1 = require("../../lib/endpoints"); const logger_1 = require("../../lib/logger"); async function executeGetByIdAction(itemIndex, moduleName, recordId) { // 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'); } if (!recordId || typeof recordId !== 'string') { throw new Error('record ID is required'); } logger_1.actionsLogger.info(`Getting record by ID in module: ${moduleName}, ID: ${recordId}`); try { let response; try { response = await (0, api_1.inflowApiRequest)(this, 'GET', endpoints_1.Endpoints.GET_BY_ID(moduleName, recordId)); } catch (apiError) { logger_1.actionsLogger.error('API request failed with error:', apiError); // Handle specific error cases if (apiError?.response?.status === 404) { // Record not found - return empty result with warning logger_1.actionsLogger.warn(`Record with ID ${recordId} not found in module ${moduleName}`); return { json: { data: null, meta: { warning: 'Record not found' }, }, pairedItem: { item: itemIndex }, }; } if (apiError?.response?.status === 403) { throw new Error('Access denied: You do not have permission to access this record'); } 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: {...record fields...}, meta: {} } if (response && typeof response === 'object' && 'data' in response) { const { data, meta } = response; // Filter out deleted records if (data && data.deleted === true) { logger_1.actionsLogger.warn(`Record with ID ${recordId} is marked as deleted`); return { json: { data: null, meta: { warning: 'Record is deleted' }, }, pairedItem: { item: itemIndex }, }; } return { json: { data, meta: meta || {}, }, 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 record by ID:', error); if (error?.error && error.error.code) { throw new Error(`[${error.error.code}] ${error.error.message}`); } throw new Error(`Failed to get record by ID in "${moduleName}": ${error.message || 'unknown error'}`); } } exports.executeGetByIdAction = executeGetByIdAction;