Permanently deleting a photo whose album was deleted failed because authorization resolved through the album. Fall back to uploader ownership when the photo is albumless. Add a bulk DELETE /trash that removes every trashed photo the caller may delete (uncapped listing) and returns the deleted count, with an «Очистить корзину» action on the trash screen.
3.4 KiB
3.4 KiB
Spec Delta
MODIFIED Requirements
Requirement: Корзина фото
Удаление фото SHALL помещать его в корзину (мягкое удаление). Восстановление SHALL возвращать фото в его альбом. Окончательное удаление SHALL удалять запись, а объекты хранилища SHALL удаляться только когда на них не остаётся ссылок ни в одном альбоме. Окончательное удаление SHALL быть доступно и для фото без альбома (например, после удаления альбома).
Scenario: Удаление в корзину
- WHEN пользователь удаляет фото
- THEN фото пропадает из альбома и появляется в корзине
Scenario: Восстановление
- WHEN пользователь восстанавливает фото из корзины
- THEN фото возвращается в свой альбом
Scenario: Окончательное удаление без ссылок
- WHEN пользователь удаляет фото из корзины навсегда, и на те же объекты нет ссылок в других альбомах
- THEN запись и объекты хранилища удаляются
Scenario: Окончательное удаление при наличии ссылок
- WHEN на объект хранилища ссылается копия в другом альбоме
- THEN запись удаляется, а объект хранилища сохраняется
Scenario: Окончательное удаление фото без альбома
- WHEN пользователь удаляет навсегда фото из корзины, у которого нет альбома
- THEN запись удаляется, а операция не завершается ошибкой отсутствующего альбома
ADDED Requirements
Requirement: Очистка корзины
Пользователь SHALL иметь возможность окончательно удалить все элементы корзины одним действием. Система SHALL удалять только те элементы, которые пользователь вправе удалить навсегда, и SHALL пропускать остальные. Операция SHALL возвращать число удалённых элементов.
Scenario: Очистка корзины
- WHEN пользователь очищает корзину
- THEN все элементы, которые он вправе удалить навсегда, удаляются
Scenario: Чужие элементы
- WHEN в корзине есть фото, которые пользователь не вправе удалить навсегда
- THEN они остаются в корзине, а остальные удаляются
Scenario: Пустая корзина
- WHEN пользователь очищает пустую корзину
- THEN операция завершается успешно, удалив ноль элементов