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
JavaScript
;
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;