feat: add Buchhaltung data reset (Transaktionen, Konten, Bankkonten) to admin DataManagementTab

This commit is contained in:
Matthias Hochmeister
2026-03-30 11:16:57 +02:00
parent 333b94f64e
commit 5f25d644f4
3 changed files with 55 additions and 5 deletions

View File

@@ -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();