Skip to content

Suppression photo(s) « mes fichiers » : proposer de conserver dans « mes albums »#356

Merged
ronan-develop merged 5 commits into
mainfrom
feature/246-detach-media-album
Jul 23, 2026
Merged

Suppression photo(s) « mes fichiers » : proposer de conserver dans « mes albums »#356
ronan-develop merged 5 commits into
mainfrom
feature/246-detach-media-album

Conversation

@ronan-develop

Copy link
Copy Markdown
Owner

Résumé

Closes #246

Media avait une relation OneToOne vers File avec onDelete: CASCADE : supprimer un fichier depuis « mes fichiers » supprimait silencieusement le Media associé et toutes ses appartenances aux albums (AlbumMedia), sans aucun avertissement.

  • Media::$file devient nullable (onDelete: SET NULL), avec une nouvelle colonne Media::$owner pour ne plus dépendre de File::$owner comme source d'autorité (ownership indépendant du File).
  • Nouveau MediaDetachService : supprime uniquement le fichier source (disque + entité), en conservant le Media et ses AlbumMedia intacts.
  • MediaDeletionService mis à jour : le CASCADE DB historique n'existe plus, il supprime donc explicitement File et Media.
  • FileWebController::delete (route web /files/{id}/delete, utilisée par « mes fichiers ») propose désormais un choix via une nouvelle modale (DeleteFileModal, jamais de confirm() natif) : suppression totale, ou conserver dans les albums si le fichier a un Media rattaché à au moins un album.
  • Guards de nullabilité sur tous les chemins de lecture existants (API GET /api/v1/medias, thumbnail, vue plein écran, partage public, renommage) pour tolérer un Media détaché sans régression.

Périmètre limité à la route web pour ce ticket — l'API publique (DELETE /api/v1/files/{id}) garde son comportement actuel de suppression totale (voir #354 pour l'alignement futur). Le renommage est masqué pour un média détaché (voir #355 pour les évolutions possibles).

Test plan

  • ./vendor/bin/phpunit — 922 tests, 0 échec (hors 1 échec Tailwind préexistant sans rapport)
  • npm test — 129 tests Jest, 0 échec
  • TDD strict (RED→GREEN) sur chaque composant : entité, service, contrôleur web, JS
  • Migration Doctrine appliquée et vérifiée sur home_cloud / home_cloud_test / home_cloud_test_test
  • Vérification manuelle en dev : upload photo → ajout à un album → suppression depuis « mes fichiers » avec « conserver dans mes albums » → vignette toujours visible en galerie/album, fichier physique supprimé du disque

@ronan-develop ronan-develop added feature Nouvelle fonctionnalité api Modifications ou ajouts concernant l’API (routes, contrôleurs, ressources…). labels Jul 23, 2026
@ronan-develop
ronan-develop merged commit 1a1e754 into main Jul 23, 2026
4 checks passed
@ronan-develop
ronan-develop deleted the feature/246-detach-media-album branch July 23, 2026 14:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api Modifications ou ajouts concernant l’API (routes, contrôleurs, ressources…). feature Nouvelle fonctionnalité

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Suppression photo(s) « mes fichiers » : proposer de conserver dans « mes albums »

1 participant