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