new features
This commit is contained in:
@@ -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<ResetTarget, (confirm: boolean) => Promise<{ count: number; deleted: boolean }>> = {
|
||||
const RESET_TARGETS: Record<string, (confirm: boolean) => 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<void> => {
|
||||
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<void> => {
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user