feat: add Buchhaltung data reset (Transaktionen, Konten, Bankkonten) to admin DataManagementTab
This commit is contained in:
@@ -241,6 +241,9 @@ const CLEANUP_TARGETS: Record<CleanupTarget, (days: number, confirm: boolean) =>
|
||||
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/reset-buchhaltung-transaktionen', authenticate, requirePermission('admin:write'), (req, res) => { req.params.resetTarget = 'reset-buchhaltung-transaktionen'; return resetHandler(req, res); });
|
||||
router.delete('/cleanup/reset-buchhaltung-konten', authenticate, requirePermission('admin:write'), (req, res) => { req.params.resetTarget = 'reset-buchhaltung-konten'; return resetHandler(req, res); });
|
||||
router.delete('/cleanup/reset-buchhaltung-bankkonten', authenticate, requirePermission('admin:write'), (req, res) => { req.params.resetTarget = 'reset-buchhaltung-bankkonten'; return resetHandler(req, res); });
|
||||
router.delete('/cleanup/reset-checklist-history', authenticate, requirePermission('admin:write'), (req, res) => { req.params.resetTarget = 'reset-checklist-history'; return resetHandler(req, res); });
|
||||
router.delete('/cleanup/issues-all', authenticate, requirePermission('admin:write'), (req, res) => { req.params.resetTarget = 'issues-all'; return resetHandler(req, res); });
|
||||
|
||||
@@ -277,11 +280,14 @@ router.delete(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
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),
|
||||
'reset-checklist-history': (c) => cleanupService.resetChecklistHistory(c),
|
||||
'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),
|
||||
'reset-checklist-history': (c) => cleanupService.resetChecklistHistory(c),
|
||||
'reset-buchhaltung-transaktionen': (c) => cleanupService.resetBuchhaltungTransaktionen(c),
|
||||
'reset-buchhaltung-konten': (c) => cleanupService.resetBuchhaltungKonten(c),
|
||||
'reset-buchhaltung-bankkonten': (c) => cleanupService.resetBuchhaltungBankkonten(c),
|
||||
};
|
||||
|
||||
const resetHandler = async (req: Request, res: Response): Promise<void> => {
|
||||
|
||||
@@ -197,6 +197,47 @@ class CleanupService {
|
||||
logger.info(`Cleanup: truncated issues (${count} rows) and reset sequence`);
|
||||
return { count, deleted: true };
|
||||
}
|
||||
|
||||
async resetBuchhaltungTransaktionen(confirm: boolean): Promise<CleanupResult> {
|
||||
if (!confirm) {
|
||||
const { rows } = await pool.query('SELECT COUNT(*)::int AS count FROM buchhaltung_transaktionen');
|
||||
return { count: rows[0].count, deleted: false };
|
||||
}
|
||||
const { rows } = await pool.query('SELECT COUNT(*)::int AS count FROM buchhaltung_transaktionen');
|
||||
const count = rows[0].count;
|
||||
await pool.query('TRUNCATE buchhaltung_transaktionen CASCADE');
|
||||
try { await pool.query('ALTER SEQUENCE buchhaltung_transaktionen_id_seq RESTART WITH 1'); } catch { /* sequence may not exist */ }
|
||||
logger.info(`Cleanup: truncated buchhaltung_transaktionen (${count} rows) and reset sequence`);
|
||||
return { count, deleted: true };
|
||||
}
|
||||
|
||||
async resetBuchhaltungKonten(confirm: boolean): Promise<CleanupResult> {
|
||||
if (!confirm) {
|
||||
const { rows } = await pool.query('SELECT COUNT(*)::int AS count FROM buchhaltung_konten');
|
||||
return { count: rows[0].count, deleted: false };
|
||||
}
|
||||
const { rows } = await pool.query('SELECT COUNT(*)::int AS count FROM buchhaltung_konten');
|
||||
const count = rows[0].count;
|
||||
await pool.query('TRUNCATE buchhaltung_transaktionen CASCADE');
|
||||
await pool.query('TRUNCATE buchhaltung_konten CASCADE');
|
||||
try { await pool.query('ALTER SEQUENCE buchhaltung_konten_id_seq RESTART WITH 1'); } catch { /* sequence may not exist */ }
|
||||
try { await pool.query('ALTER SEQUENCE buchhaltung_transaktionen_id_seq RESTART WITH 1'); } catch { /* sequence may not exist */ }
|
||||
logger.info(`Cleanup: truncated buchhaltung_konten (${count} rows) and reset sequence`);
|
||||
return { count, deleted: true };
|
||||
}
|
||||
|
||||
async resetBuchhaltungBankkonten(confirm: boolean): Promise<CleanupResult> {
|
||||
if (!confirm) {
|
||||
const { rows } = await pool.query('SELECT COUNT(*)::int AS count FROM buchhaltung_bankkonten');
|
||||
return { count: rows[0].count, deleted: false };
|
||||
}
|
||||
const { rows } = await pool.query('SELECT COUNT(*)::int AS count FROM buchhaltung_bankkonten');
|
||||
const count = rows[0].count;
|
||||
await pool.query('TRUNCATE buchhaltung_bankkonten CASCADE');
|
||||
try { await pool.query('ALTER SEQUENCE buchhaltung_bankkonten_id_seq RESTART WITH 1'); } catch { /* sequence may not exist */ }
|
||||
logger.info(`Cleanup: truncated buchhaltung_bankkonten (${count} rows) and reset sequence`);
|
||||
return { count, deleted: true };
|
||||
}
|
||||
}
|
||||
|
||||
export default new CleanupService();
|
||||
|
||||
Reference in New Issue
Block a user