Skip to main content
View as Markdown

Suppression réversible et restauration

Supprimer un enregistrement est non destructif par défaut : la ligne est marquée comme supprimée (deletedAt/deletedBy estampillés) et disparaît des requêtes normales, mais reste récupérable. Cela protège contre les suppressions accidentelles, prend en charge un flux corbeille/annulation et conserve une piste d'audit. La suppression définitive (irréversible) est une opération distincte, régulée par permission, pour les cas qui exigent un effacement irréversible.

Méthode et chemin Description
DELETE /api/tables/:tableId/records/:recordId Supprimer (réversible) un enregistrement
DELETE /api/tables/:tableId/records/:recordId?permanent=true Supprimer définitivement un enregistrement
GET /api/tables/:tableId/trash Parcourir les enregistrements supprimés de façon réversible
POST /api/tables/:tableId/records/:recordId/restore Restaurer un enregistrement supprimé de façon réversible
POST /api/tables/:tableId/records/batch/restore Restaurer plusieurs enregistrements

Suppression réversible

DELETE /api/tables/orders/records/123

Ceci renseigne deletedAt avec l'heure courante et deletedBy avec l'utilisateur agissant, puis exclut la ligne des réponses de liste et de lecture par défaut. L'opération est consignée dans l'historique des modifications de l'enregistrement.

Suppression définitive (irréversible)

DELETE /api/tables/orders/records/123?permanent=true

La suppression définitive retire la ligne de façon irréversible et requiert la permission permanentDelete. Lorsque la suppression forcée n'est pas autorisée pour une table, le point de terminaison renvoie 404 (anti-énumération) plutôt que 403.

Comportement en cascade sur les enregistrements associés

Lorsqu'un enregistrement est supprimé, les enregistrements associés sont traités selon la politique onDelete du champ de relation. Configurez-la sur le champ relationnel.

tables:
  - id: 1
    name: orders
    permissions:
      delete: ['admin', 'member']
      permanentDelete: ['admin'] # Permanent delete requires admin role
    fields:
      - id: 1
        name: customer_id
        type: relationship
        relatedTable: customers
        onDelete: cascade # cascade | set-null | restrict
onDelete Effet lorsque le parent est supprimé
cascade Supprimer également les enregistrements dépendants (enfants)
set-null Effacer la référence de clé étrangère sur les dépendants
restrict Bloquer la suppression tant que des dépendants existent

Vue corbeille

GET /api/tables/:tableId/trash liste les enregistrements supprimés de façon réversible afin qu'une interface puisse présenter une corbeille récupérable. Le même résultat est disponible sur le point de terminaison de liste via includeDeleted=only.

Restauration

POST /api/tables/orders/records/123/restore

La restauration efface deletedAt (ramenant la ligne aux requêtes normales), estampille un restored_at, capture l'utilisateur restaurant et consigne l'opération dans l'historique.

{
  "id": 123,
  "deleted_at": null,
  "restored_at": "2025-01-15T11:00:00Z"
}
Statut Signification
200 OK Enregistrement restauré
400 Bad Request L'enregistrement n'est pas actuellement supprimé
401 Unauthorized Aucune session active
404 Not Found Enregistrement absent ou non visible

Restauration en lot

Récupérez plusieurs enregistrements en une seule transaction. Les enregistrements qui ne sont pas actuellement supprimés sont ignorés ; un id manquant annule l'ensemble du lot (404). Voir Opérations en lot.

POST /api/tables/orders/records/batch/restore
{
  "ids": ["123", "124", "125"]
}

Interroger les enregistrements supprimés

Par défaut, les lignes supprimées de façon réversible sont exclues des réponses de liste et de lecture. Remplacez ce comportement avec le paramètre de requête includeDeleted :

Valeur Comportement
(omis) Enregistrements actifs uniquement (défaut)
true Enregistrements actifs et supprimés
only Enregistrements supprimés de façon réversible uniquement (équivalent à la vue corbeille)
GET /api/tables/orders/records?includeDeleted=true
GET /api/tables/orders/records?includeDeleted=only

Résumé des permissions

Opération Permission
Suppression réversible delete (selon les permissions de table + RBAC)
Suppression définitive permanentDelete (généralement réservé aux administrateurs)
Restauration attribution delete / restauration pour le rôle

Pages associées