diff --git a/src/controllers/workflowTemplate.controller.ts b/src/controllers/workflowTemplate.controller.ts index 8fb7d05..870536f 100644 --- a/src/controllers/workflowTemplate.controller.ts +++ b/src/controllers/workflowTemplate.controller.ts @@ -53,4 +53,70 @@ export const getTemplates = async (req: Request, res: Response) => { error: error instanceof Error ? error.message : 'Unknown error' }); } +} + + +export const updateTemplate = async (req: Request, res: Response) => { + try { + const { id } = req.params; + const updates = req.body; + + const template = await WorkflowTemplate.findByPk(id); + + if (!template) { + return res.status(404).json({ + success: false, + message: 'Workflow template not found' + }); + } + + await template.update(updates); + + return res.status(200).json({ + success: true, + message: 'Workflow template updated successfully', + data: template + }); + } catch (error) { + logger.error('Error updating workflow template:', error); + return res.status(500).json({ + success: false, + message: 'Failed to update workflow template', + error: error instanceof Error ? error.message : 'Unknown error' + }); + } +}; + +export const deleteTemplate = async (req: Request, res: Response) => { + try { + const { id } = req.params; + const template = await WorkflowTemplate.findByPk(id); + + if (!template) { + return res.status(404).json({ + success: false, + message: 'Workflow template not found' + }); + } + + // Hard delete or Soft delete based on preference. + // Since we have isActive flag, let's use that (Soft Delete) or just destroy if it's unused. + // For now, let's do a hard delete to match the expectation of "Delete" in the UI + // unless there are FK constraints (which sequelize handles). + // Actually, safer to Soft Delete by setting isActive = false if we want history, + // but user asked for Delete. Let's do destroy. + await template.destroy(); + + return res.status(200).json({ + success: true, + message: 'Workflow template deleted successfully' + }); + } catch (error) { + logger.error('Error deleting workflow template:', error); + return res.status(500).json({ + success: false, + message: 'Failed to delete workflow template', + error: error instanceof Error ? error.message : 'Unknown error' + }); + } }; diff --git a/src/routes/workflowTemplate.routes.ts b/src/routes/workflowTemplate.routes.ts index 3ba2875..e57f15a 100644 --- a/src/routes/workflowTemplate.routes.ts +++ b/src/routes/workflowTemplate.routes.ts @@ -1,5 +1,5 @@ import { Router } from 'express'; -import { createTemplate, getTemplates } from '../controllers/workflowTemplate.controller'; +import { createTemplate, getTemplates, updateTemplate, deleteTemplate } from '../controllers/workflowTemplate.controller'; import { authenticateToken } from '../middlewares/auth.middleware'; import { requireAdmin } from '../middlewares/authorization.middleware'; @@ -10,5 +10,7 @@ router.get('/', authenticateToken, getTemplates); // Admin only route to create templates router.post('/', authenticateToken, requireAdmin, createTemplate); +router.put('/:id', authenticateToken, requireAdmin, updateTemplate); +router.delete('/:id', authenticateToken, requireAdmin, deleteTemplate); export default router;