Skip to content

Soft-delete des snippets avec flag deletedAt #112

@audrey-donjon

Description

@audrey-donjon

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions