From 6e2529bb49cffc4130458f12631da6ae6f3e77ef Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Wed, 9 Oct 2024 14:36:19 +0530 Subject: [PATCH] feat: use robot model & robotId instead of fileName --- server/src/routes/workflow.ts | 38 +++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/server/src/routes/workflow.ts b/server/src/routes/workflow.ts index ffbfb39e..c2e0be6b 100644 --- a/server/src/routes/workflow.ts +++ b/server/src/routes/workflow.ts @@ -7,6 +7,7 @@ import logger from "../logger"; import { browserPool } from "../server"; import { readFile } from "../workflow-management/storage"; import { requireSignIn } from '../middlewares/auth'; +import Robot from '../models/Robot'; export const router = Router(); @@ -122,3 +123,40 @@ router.put('/:browserId/:fileName', requireSignIn, async (req, res) => { return res.send(null); } }); + + +router.put('/:browserId/:robotId', requireSignIn, async (req, res) => { + try { + const browser = browserPool.getRemoteBrowser(req.params.browserId); + logger.log('debug', `Updating workflow for Robot ID: ${req.params.robotId}`); + + if (browser && browser.generator) { + const robot = await Robot.findByPk(req.params.robotId); + + if (!robot) { + logger.log('info', `Robot not found with ID: ${req.params.robotId}`); + return res.status(404).send({ error: 'Robot not found' }); + } + + const { recording, recording_meta } = robot; + + if (recording && recording.workflow) { + browser.generator.updateWorkflowFile(recording, recording_meta); + const workflowFile = browser.generator.getWorkflowFile(); + return res.send(workflowFile); + } else { + logger.log('info', `Invalid recording data for Robot ID: ${req.params.robotId}`); + return res.status(400).send({ error: 'Invalid recording data' }); + } + } + + logger.log('info', `Browser or generator not available for ID: ${req.params.browserId}`); + return res.status(400).send({ error: 'Browser or generator not available' }); + } catch (e) { + const { message } = e as Error; + logger.log('error', `Error while updating workflow for Robot ID: ${req.params.robotId}. Error: ${message}`); + return res.status(500).send({ error: 'Internal server error' }); + } +}); + +export default router; \ No newline at end of file