Checkpoint: Purge automatique des tombstones (processed_dedup_keys) de plus de 6 mois :

- purgeOldArticles dans db.ts : suppression des entrées processedDedupKeys.processedAt <= cutoff 6 mois
- Logs cron et init mis à jour pour afficher le nombre de tombstones supprimés
- 0 erreur TypeScript
This commit is contained in:
Manus
2026-07-10 21:14:55 -04:00
parent 8782883bea
commit d283675230
3 changed files with 13 additions and 7 deletions

View File

@@ -14,6 +14,7 @@ import {
InsertIdea,
rssFeeds,
rssSettings,
processedDedupKeys,
type InsertRssFeed,
type InsertRssSettings,
type ImportLog,
@@ -489,16 +490,21 @@ export async function saveRssSettings(data: Partial<Omit<InsertRssSettings, "id"
}
// ─── Purge ───────────────────────────────────────────────────────────────────
export async function purgeOldArticles(retentionMonths: number): Promise<{ veille: number; aap: number }> {
export async function purgeOldArticles(retentionMonths: number): Promise<{ veille: number; aap: number; tombstones: number }> {
const db = await getDb();
if (!db) throw new Error("Database not available");
const cutoff = new Date();
cutoff.setMonth(cutoff.getMonth() - retentionMonths);
const veilleResult = await db.delete(veilleItems).where(lte(veilleItems.importedAt, cutoff));
const aapResult = await db.delete(aapItems).where(lte(aapItems.importedAt, cutoff));
// Purge des tombstones (processed_dedup_keys) de plus de 6 mois
const tombstoneCutoff = new Date();
tombstoneCutoff.setMonth(tombstoneCutoff.getMonth() - 6);
const tombstoneResult = await db.delete(processedDedupKeys).where(lte(processedDedupKeys.processedAt, tombstoneCutoff));
return {
veille: (veilleResult as any).affectedRows ?? 0,
aap: (aapResult as any).affectedRows ?? 0,
tombstones: (tombstoneResult as any).affectedRows ?? 0,
};
}