fix(photos): главное фото записи не дублируется в общей галерее

На /photos.html одно фото показывалось дважды — как «Главное фото записи»
и как «Фото записи». Причина в модели данных: entries.photo_path физически
совпадает с одной из строк entry_photos той же записи (при создании записи
server.js пишет первый файл и туда, и туда), а /api/photos склеивал обе
ветки через UNION ALL без дедупликации.

Фильтр добавлен внутри подзапроса, поэтому чинит и total в пагинации.
Дубль в самой БД не убираем: модель «главное фото = один из фото галереи»
сквозная — на неё завязаны journal.js (isMain/mainPhotoPath) и синхронные
UPDATE entry_photos ... WHERE photo_path = $3 при ИИ-обработке фото.
This commit is contained in:
dev
2026-10-04 11:56:22 +03:00
parent 3c127b895e
commit 001ff8a7b7
+1 -1
View File
@@ -5042,7 +5042,7 @@ app.get('/api/photos', requireAuth, async (req, res) => {
FROM entry_photos ep FROM entry_photos ep
JOIN entries e ON e.id = ep.entry_id JOIN entries e ON e.id = ep.entry_id
JOIN groups g ON g.id = e.group_id JOIN groups g ON g.id = e.group_id
WHERE e.deleted_at IS NULL WHERE e.deleted_at IS NULL AND ep.photo_path IS DISTINCT FROM e.photo_path
UNION ALL UNION ALL
SELECT 'group_photo', 'Фотохроника группы', gp.photo_path, gp.group_id, NULL::varchar, gp.group_id, SELECT 'group_photo', 'Фотохроника группы', gp.photo_path, gp.group_id, NULL::varchar, gp.group_id,
g.branch_id, g.name, gp.created_at, g.branch_id, g.name, gp.created_at,