feat: route to write to sheet
This commit is contained in:
@@ -2,6 +2,9 @@ import { Router } from 'express';
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import logger from "../logger";
|
||||
import { writeDataToSheet } from "../workflow-management/integrations/gsheet"
|
||||
import { readFile } from "../workflow-management/storage";
|
||||
|
||||
|
||||
export const router = Router();
|
||||
|
||||
@@ -49,3 +52,35 @@ router.post('/upload-credentials', async (req, res) => {
|
||||
return res.status(500).json({ message: 'Failed to save credentials.', error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
router.post('/update-google-sheet/:fileName/:runId', async (req, res) => {
|
||||
try {
|
||||
const run = await readFile(`./../storage/runs/${req.params.fileName}_${req.params.runId}.json`);
|
||||
const parsedRun = JSON.parse(run);
|
||||
|
||||
if (parsedRun.status === 'success' && parsedRun.serializableOutput) {
|
||||
const data = parsedRun.serializableOutput as { [key: string]: any }[];
|
||||
const integrationConfig = await loadIntegrations();
|
||||
|
||||
if (integrationConfig) {
|
||||
const { spreadsheetId, sheetName, credentials } = integrationConfig;
|
||||
|
||||
if (spreadsheetId && sheetName && credentials) {
|
||||
// Convert data to Google Sheets format (headers and rows)
|
||||
const headers = Object.keys(data[0]);
|
||||
const rows = data.map((row: { [key: string]: any }) => Object.values(row));
|
||||
const outputData = [headers, ...rows]; // Include headers
|
||||
|
||||
await writeDataToSheet(spreadsheetId, sheetName, outputData);
|
||||
logger.log('info', `Data written to Google Sheet successfully for ${req.params.fileName}_${req.params.runId}`);
|
||||
return res.send({ success: true, message: 'Data updated in Google Sheet' });
|
||||
}
|
||||
}
|
||||
return res.status(400).send({ success: false, message: 'Google Sheet integration not configured' });
|
||||
}
|
||||
return res.status(400).send({ success: false, message: 'Run not successful or no data to update' });
|
||||
} catch (error) {
|
||||
logger.log('error', `Failed to write data to Google Sheet for ${req.params.fileName}_${req.params.runId}: ${error.message}`);
|
||||
return res.status(500).send({ success: false, message: 'Failed to update Google Sheet', error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user