-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Contexte
– Actuellement, deleteSnippet(id) supprime définitivement un snippet de la base.
– À terme, on souhaite pouvoir restaurer les snippets supprimés (< 30 jours) via une corbeille, et purger automatiquement après 30 jours.
Spécifications
-
Étendre l’entité Snippet :
- ajouter une colonne deletedAt: Date ? (nullable, type timestamptz).
- exposer deletedAt dans le schéma GraphQL. -
Modifier la mutation deleteSnippet(id) pour :
- ne plus appeler remove(),
- mais positionner snippet.deletedAt = new Date() et save(). -
Filtrer les lectures (getAllSnippets et getSnippet) pour ne renvoyer que les snippets où deletedAt IS NULL.
-
Ajouter une migration TypeORM pour créer la colonne deletedAt.
-
Laisser la mutation DELETE_SNIPPET côté front inchangée (retourne toujours Boolean et évacue le cache).
-
Documenter l’intention d’ajouter ultérieurement un cron de purge (suppression définitive des entrées deletedAt < now() - 30j).
Critères d'acceptation
-
Le schéma DB/TypeORM inclut bien deletedAt nullable sur Snippet.
-
La migration AddDeletedAtToSnippet a été générée et appliquée sans erreur.
-
La mutation deleteSnippet(id) met à jour deletedAt au lieu de supprimer l’entité.
-
Les résolveurs getAllSnippets et getSnippet excluent désormais les snippets soft-deleted (deletedAt ≠ null).
-
Couverture par tests unitaires ou d’intégration pour :
-
soft-delete via la mutation,
-
filtres de lecture (exclure les soft-deleted).
-
-
Documentation mise à jour (README ou doc interne) mentionnant le flag deletedAt et l'objectif/manière de procéder pour mettre en place la purge future.