Все 9 задач закрыты; в design.md уточнено, что удалённые привязки не осиротевают объекты: отредактированная версия живёт вместе с фото.
2.5 KiB
2.5 KiB
Tasks
1. Список edit-ролей
- 1.1 В
backend/internal/photos/edit_render.goсобрать общий список ролей (RoleEdit,RoleEditThumb,RoleEditMedium,RoleEditPreview) и хелпер проверки роли; проверить, что список используется в обоих хранилищах и не дублируется строковыми литералами
2. Копирование без отредактированной версии
- 2.1 В
Store.Clone(backend/internal/photos/store.go) исключить edit-роли из переносимых привязокphoto_objects; проверить тестомcopy_test.go: копия получает обычные варианты и не получает edit-объекты - 2.2 В
SQLiteStore.Clone(backend/internal/photos/sqlite_store.go) сделать то же для SQLite; проверить тем же тестом, прогнанным на SQLite-хранилище
3. Разовая чистка существующих копий
- 3.1 Добавить миграцию Postgres
backend/migrations/000016_*.up.sqlи.down.sql, удаляющую edit-привязки у фото с пустымиedit_params; проверить на тестовой базе, что привязки исходных фото с правками остались, а «чужие» удалены - 3.2 Добавить миграцию SQLite
backend/migrations/sqlite/000008_*.up.sqlи.down.sqlс тем же действием; проверить тем же сценарием на SQLite - 3.3 Убедиться, что удалённые объекты подбираются сборщиком мусора
(
ClaimGarbageне возвращает объекты с привязками); проверить существующим тестомobjects_test.go
4. Интеграционная проверка
- 4.1 Прогнать
cd backend && go test ./internal/photos/ -v; убедиться, что тесты зелёные - 4.2 Прогнать
make test; убедиться, что весь бэкенд зелёный - 4.3 Проверить вручную: отредактировать фото, скопировать его в другой альбом и убедиться, что копия показывает исходник, а панель правок у копии пустая