import { Router } from 'express'; import { PrismaClient } from '@prisma/client'; const router = Router(); const prisma = new PrismaClient(); // GET all nodes and edges router.get('/topology', async (req, res) => { try { const nodes = await prisma.networkNode.findMany(); const edges = await prisma.networkEdge.findMany(); res.json({ status: 'success', nodes, edges }); } catch (error) { res.status(500).json({ status: 'error', message: 'Failed to fetch topology' }); } }); // POST a new node router.post('/topology/nodes', async (req, res) => { try { const node = await prisma.networkNode.create({ data: req.body }); res.json({ status: 'success', node }); } catch (error) { res.status(400).json({ status: 'error', message: 'Failed to create node' }); } }); // PUT (update) a node router.put('/topology/nodes/:id', async (req, res) => { try { const node = await prisma.networkNode.update({ where: { id: req.params.id }, data: req.body, }); res.json({ status: 'success', node }); } catch (error) { res.status(400).json({ status: 'error', message: 'Failed to update node' }); } }); // DELETE a node router.delete('/topology/nodes/:id', async (req, res) => { try { await prisma.networkNode.delete({ where: { id: req.params.id } }); res.json({ status: 'success' }); } catch (error) { res.status(400).json({ status: 'error', message: 'Failed to delete node' }); } }); // POST a new edge router.post('/topology/edges', async (req, res) => { try { const edge = await prisma.networkEdge.create({ data: req.body }); res.json({ status: 'success', edge }); } catch (error) { res.status(400).json({ status: 'error', message: 'Failed to create edge' }); } }); // DELETE an edge router.delete('/topology/edges/:id', async (req, res) => { try { await prisma.networkEdge.delete({ where: { id: req.params.id } }); res.json({ status: 'success' }); } catch (error) { res.status(400).json({ status: 'error', message: 'Failed to delete edge' }); } }); export default router;