Centralized_Reporting_Backend/src/api/controllers/n8nController.js
2025-10-10 12:10:33 +05:30

109 lines
2.8 KiB
JavaScript

const { success } = require('../../utils/response');
const n8nService = require('../../services/n8nService');
/**
* Fetch data via n8n workflow
*/
async function fetchData(req, res) {
const { provider, service, module } = req.params;
const userId = req.user.uuid;
const options = {
limit: parseInt(req.query.limit) || 200,
page: parseInt(req.query.page) || 1,
offset: parseInt(req.query.offset) || 0,
filters: req.query.filters || {}
};
try {
const result = await n8nService.fetchData(userId, provider, service, module, options);
res.json(success(`${provider} ${service} ${module} data fetched successfully`, result));
} catch (error) {
res.status(400).json({
status: 'error',
message: error.message,
errorCode: 'N8N_FETCH_ERROR',
timestamp: new Date().toISOString()
});
}
}
/**
* Get supported providers and modules
*/
async function getSupportedProviders(req, res) {
try {
const providers = n8nService.getSupportedProviders();
res.json(success('Supported providers retrieved', providers));
} catch (error) {
res.status(500).json({
status: 'error',
message: error.message,
errorCode: 'N8N_ERROR',
timestamp: new Date().toISOString()
});
}
}
/**
* Fetch Zoho data (shorthand)
*/
async function fetchZohoData(req, res) {
const { service, module } = req.params;
const userId = req.user.uuid;
const options = {
limit: parseInt(req.query.limit) || 200,
page: parseInt(req.query.page) || 1,
filters: req.query
};
try {
const result = await n8nService.fetchData(userId, 'zoho', service, module, options);
res.json(success(`Zoho ${service} ${module} data fetched successfully`, result));
} catch (error) {
res.status(400).json({
status: 'error',
message: error.message,
errorCode: 'ZOHO_FETCH_ERROR',
timestamp: new Date().toISOString()
});
}
}
/**
* Fetch Salesforce data (shorthand)
*/
async function fetchSalesforceData(req, res) {
const { service, module } = req.params;
const userId = req.user.uuid;
const options = {
limit: parseInt(req.query.limit) || 200,
offset: parseInt(req.query.offset) || 0,
nextRecordsUrl: req.query.nextRecordsUrl || null, // Salesforce pagination
filters: req.query
};
try {
const result = await n8nService.fetchData(userId, 'salesforce', service, module, options);
res.json(success(`Salesforce ${service} ${module} data fetched successfully`, result));
} catch (error) {
res.status(400).json({
status: 'error',
message: error.message,
errorCode: 'SALESFORCE_FETCH_ERROR',
timestamp: new Date().toISOString()
});
}
}
module.exports = {
fetchData,
getSupportedProviders,
fetchZohoData,
fetchSalesforceData
};