Contexte
#246 a ajouté la possibilité de conserver un Media dans ses albums lors de la suppression d'un fichier depuis « mes fichiers », mais uniquement sur la route web (POST /files/{id}/delete, FileWebController::delete).
L'API publique (DELETE /api/v1/files/{id}, FileProcessor::handleDelete) garde le comportement historique : suppression totale du File et du Media associé (plus de CASCADE DB automatique depuis #246, donc MediaDeletionService::delete() est appelé explicitement), sans possibilité de conserver le Media dans ses albums.
Besoin
Permettre au client API de choisir, comme sur le web : ?keepInAlbums=true (ou équivalent body) sur DELETE /api/v1/files/{id} déclenche MediaDetachService::detachAndDeleteFile() au lieu de MediaDeletionService::delete().
Points d'attention
FileProcessor::handleDelete (src/State/FileProcessor.php) est le point d'entrée à modifier.
- Réutiliser
MediaDetachServiceInterface/MediaDeletionServiceInterface, déjà en place.
- Tests API Platform à ajouter (pattern
tests/Api/MediaTest.php).
Contexte
#246 a ajouté la possibilité de conserver un Media dans ses albums lors de la suppression d'un fichier depuis « mes fichiers », mais uniquement sur la route web (
POST /files/{id}/delete,FileWebController::delete).L'API publique (
DELETE /api/v1/files/{id},FileProcessor::handleDelete) garde le comportement historique : suppression totale du File et du Media associé (plus de CASCADE DB automatique depuis #246, doncMediaDeletionService::delete()est appelé explicitement), sans possibilité de conserver le Media dans ses albums.Besoin
Permettre au client API de choisir, comme sur le web :
?keepInAlbums=true(ou équivalent body) surDELETE /api/v1/files/{id}déclencheMediaDetachService::detachAndDeleteFile()au lieu deMediaDeletionService::delete().Points d'attention
FileProcessor::handleDelete(src/State/FileProcessor.php) est le point d'entrée à modifier.MediaDetachServiceInterface/MediaDeletionServiceInterface, déjà en place.tests/Api/MediaTest.php).