import { Request, Response } from 'express'; const genServerList = (current: number, pageSize: number) => { const tableListDataSource: any[] = []; const statusList = ['online', 'offline', 'maintenance']; for (let i = 0; i < pageSize; i += 1) { const status = statusList[i % 3]; tableListDataSource.push({ key: i, id: `srv-${i}`, name: `Server-${i}`, ip: `192.168.1.${i}`, status, os: 'Ubuntu 22.04 LTS', cpu: Math.floor(Math.random() * 100), memory: Math.floor(Math.random() * 100), tags: ['web', 'production'], updatedAt: new Date().toISOString(), createdAt: new Date().toISOString(), }); } return tableListDataSource; }; let tableListDataSource = genServerList(1, 40); export default { 'GET /api/servers': (req: Request, res: Response) => { const { current = 1, pageSize = 20 } = req.query as any; // Cast to any to access pagination params // Simulate pagination filter let dataSource = [...tableListDataSource].slice( ((current as number) - 1) * (pageSize as number), (current as number) * (pageSize as number), ); res.json({ data: dataSource, total: tableListDataSource.length, success: true, pageSize, current: parseInt(`${current}`, 10) || 1, }); }, 'POST /api/servers': (req: Request, res: Response) => { const newData = { ...req.body, updatedAt: new Date().toISOString(), createdAt: new Date().toISOString(), id: `srv-${Math.floor(Math.random() * 1000)}`, key: Math.floor(Math.random() * 1000), }; tableListDataSource.unshift(newData); res.json(newData); }, 'PUT /api/servers/:id': (req: Request, res: Response) => { const { id } = req.params; const index = tableListDataSource.findIndex(item => item.id === id); if (index !== -1) { tableListDataSource[index] = { ...tableListDataSource[index], ...req.body }; res.json(tableListDataSource[index]); } else { res.status(404).json({ success: false }); } }, 'DELETE /api/servers/:id': (req: Request, res: Response) => { const { id } = req.params; tableListDataSource = tableListDataSource.filter(item => item.id !== id); res.json({ success: true }); }, 'POST /api/servers/:id/restart': (req: Request, res: Response) => { res.json({ success: true, status: 'restarting' }); }, };