Le grand ménage

Exercice 4 sur 6 du chapitre 11 · 280 XP · 5 objectifs vérifiés par des tests

Notions abordées : Tâche longueprogressIterate()--dry-runTraitement par lotstoIterable()Verbosité

Le registre grossit. Des réservations honorées ou annulées depuis des mois s'y entassent, et la page du registre ralentit. Gorm veut une commande de grand ménage, à lancer une fois par mois (et un jour, par une tâche planifiée).

Une commande qui supprime des données en masse mérite des précautions : on veut pouvoir regarder avant de supprimer, suivre son avancement, et être sûr qu'elle tient avec des milliers de réservations.

Les tâches longues

Votre mission

Écrivez app:registre:purger :

  1. elle supprime les réservations terminées (honoree ou annulee) dont le jour est antérieur à la limite : par défaut, il y a 30 jours. Les autres ne bougent pas. Résumé : « 2 réservations purgées. » ;
  2. --dry-run ne supprime rien et annonce « 2 réservations seraient purgées. » ;
  3. --avant choisit la limite : --avant 2026-08-01, ou relative comme --avant "last month". Une date illisible donne Command::INVALID et « Date invalide » ;
  4. elle traite les réservations par lots, avec une barre de progression, jusqu'à la dernière ;
  5. avec -v, elle liste chaque réservation purgée : « Boromir, le 02/07/2026 (honoree) ».

Dans la Console : app:registre:purger --dry-run --avant today -v, puis sans --dry-run.