diff --git a/backend/src/routes/admin.routes.ts b/backend/src/routes/admin.routes.ts index de77134..e0a5682 100644 --- a/backend/src/routes/admin.routes.ts +++ b/backend/src/routes/admin.routes.ts @@ -269,36 +269,34 @@ router.delete( // Reset / Truncate endpoints (no olderThanDays, just ?confirm=true) // --------------------------------------------------------------------------- -type ResetTarget = 'reset-bestellungen' | 'reset-ausruestung-anfragen' | 'reset-issues' | 'issues-all'; - -const RESET_TARGETS: Record Promise<{ count: number; deleted: boolean }>> = { +const RESET_TARGETS: Record Promise<{ count: number; deleted: boolean }>> = { 'reset-bestellungen': (c) => cleanupService.resetBestellungenSequence(c), 'reset-ausruestung-anfragen': (c) => cleanupService.resetAusruestungAnfragenSequence(c), 'reset-issues': (c) => cleanupService.resetIssuesSequence(c), 'issues-all': (c) => cleanupService.resetIssuesSequence(c), }; -router.delete( - '/cleanup/:resetTarget(reset-bestellungen|reset-ausruestung-anfragen|reset-issues|issues-all)', - authenticate, - requirePermission('admin:write'), - async (req: Request, res: Response): Promise => { - try { - const target = req.params.resetTarget as ResetTarget; - const handler = RESET_TARGETS[target]; - if (!handler) { - res.status(400).json({ success: false, message: `Unknown reset target: ${target}` }); - return; - } - const confirm = req.query.confirm === 'true'; - const result = await handler(confirm); - res.json({ success: true, data: result }); - } catch (error) { - logger.error('Reset failed', { error, target: req.params.resetTarget }); - res.status(500).json({ success: false, message: 'Reset failed' }); +const resetHandler = async (req: Request, res: Response): Promise => { + try { + const target = req.params.resetTarget as string; + const handler = RESET_TARGETS[target]; + if (!handler) { + res.status(400).json({ success: false, message: `Unknown reset target: ${target}` }); + return; } + const confirm = req.query.confirm === 'true'; + const result = await handler(confirm); + res.json({ success: true, data: result }); + } catch (error) { + logger.error('Reset failed', { error, target: req.params.resetTarget }); + res.status(500).json({ success: false, message: 'Reset failed' }); } -); +}; + +router.delete('/cleanup/reset-bestellungen', authenticate, requirePermission('admin:write'), (req, res) => { req.params.resetTarget = 'reset-bestellungen'; return resetHandler(req, res); }); +router.delete('/cleanup/reset-ausruestung-anfragen', authenticate, requirePermission('admin:write'), (req, res) => { req.params.resetTarget = 'reset-ausruestung-anfragen'; return resetHandler(req, res); }); +router.delete('/cleanup/reset-issues', authenticate, requirePermission('admin:write'), (req, res) => { req.params.resetTarget = 'reset-issues'; return resetHandler(req, res); }); +router.delete('/cleanup/issues-all', authenticate, requirePermission('admin:write'), (req, res) => { req.params.resetTarget = 'issues-all'; return resetHandler(req, res); }); // --------------------------------------------------------------------------- // DELETE /api/admin/users/:userId/sync-data — selective sync data deletion