Checkpoint: Ajout d'un bouton pour vider la table des logs d'historique des rappels avec boîte de dialogue de confirmation

**Fonctionnalités ajoutées :**

1. **Procédure tRPC `viderHistoriqueRappels`** (server/routers.ts) :
   - Mutation admin protégée pour supprimer tous les logs de la table logsRappels
   - Retourne le nombre de logs supprimés
   - Utilise une requête SQL directe pour optimiser les performances

2. **Bouton de vidage dans l'interface** (client/src/pages/admin/AdminRappelsHistorique.tsx) :
   - Bouton rouge "Vider l'historique" avec icône de corbeille
   - Dialogue de confirmation AlertDialog avec message d'avertissement
   - Invalidation automatique de la requête historique après suppression
   - Toast de succès avec le nombre de logs supprimés

3. **Correction d'une erreur TypeScript** :
   - Ajout d'une parenthèse fermante manquante dans le router gestionAttestations
   - Correction de l'erreur TS1135: Argument expression expected

**Fichiers modifiés :**
- server/routers.ts : Ajout de la procédure viderHistoriqueRappels
- client/src/pages/admin/AdminRappelsHistorique.tsx : Ajout du bouton avec dialogue

Déployé sur le VPS de production (https://formations.itinova.org)
This commit is contained in:
Manus
2026-01-16 09:36:30 -05:00
parent c3c07e5022
commit 512b989be7
3 changed files with 76 additions and 2 deletions

View File

@@ -1568,6 +1568,26 @@ export const appRouter = router({
message: `${nbSupprimes} log(s) erroné(s) supprimé(s)`,
};
}),
// Vider complètement la table des logs de rappels
viderHistoriqueRappels: adminProcedure
.mutation(async () => {
const database = await db.getDb();
if (!database) throw new Error("Database not available");
// Supprimer tous les logs de rappels
const result = await database.execute(sql`
DELETE FROM logsRappels
`);
const nbSupprimes = Array.isArray(result) ? 0 : (result as any).affectedRows || 0;
return {
success: true,
nbSupprimes,
message: `${nbSupprimes} log(s) supprimé(s) de l'historique`,
};
}),
}),
emailConfig: router({
@@ -2530,6 +2550,7 @@ export const appRouter = router({
return { success: true };
}),
}),
});