109 lines
2.8 KiB
JavaScript
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
|
|
};
|
|
|