Correctif Contrainte de suppression de compte

This commit is contained in:
2026-07-05 00:54:40 +02:00
parent 5e775da711
commit 1f75878d87
4 changed files with 83 additions and 2 deletions
+10
View File
@@ -679,6 +679,16 @@ router.delete('/:id', (req, res, next) => {
const plat = db.prepare('SELECT logo_filename FROM plateformes WHERE id=? AND user_id=?')
.get(req.params.id, req.user.id);
if (!plat) throw new HttpError(404, 'Not found');
// plateforme_id est en ON DELETE CASCADE sur investissements/depots_retraits (nécessaire pour
// permettre la suppression complète d'un compte) — on protège donc ici, explicitement, contre
// la suppression accidentelle d'une plateforme qui a encore des données rattachées.
const { n: nbInv } = db.prepare('SELECT COUNT(*) AS n FROM investissements WHERE plateforme_id = ?').get(req.params.id);
const { n: nbDr } = db.prepare('SELECT COUNT(*) AS n FROM depots_retraits WHERE plateforme_id = ?').get(req.params.id);
if (nbInv > 0 || nbDr > 0) {
throw new HttpError(400, `Impossible de supprimer cette plateforme : elle a encore ${nbInv} investissement(s) et ${nbDr} mouvement(s) de dépôt/retrait enregistrés. Supprimez-les d'abord.`);
}
const r = db.prepare('DELETE FROM plateformes WHERE id=? AND user_id=?')
.run(req.params.id, req.user.id);
if (r.changes === 0) throw new HttpError(404, 'Not found');