Correctif Contrainte de suppression de compte
This commit is contained in:
@@ -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');
|
||||
|
||||
Reference in New Issue
Block a user