diff --git a/CHANGELOG.md b/CHANGELOG.md index 76081170..eda89c90 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog + +#### [0.4.23] - 2025-05-25 + +### Исправлено +- Ошибка в функции `get_reactions_with_stat`: + - Добавлен вызов метода `distinct()` перед применением `limit` и `offset` для предотвращения дублирования результатов + - Улучшена документация функции с описанием обработки результатов запроса + - Оптимизирована сортировка и группировка результатов для корректной работы с joined eager loads + #### [0.4.22] - 2025-05-21 ### Добавлено @@ -433,4 +442,4 @@ - `gittask`, `inbox` and `auth` logics removed - `settings` moved to base and now smaller - new outside auth schema -- removed `gittask`, `auth`, `inbox`, `migration` +- removed `gittask`, `auth`, `inbox`, `migration` \ No newline at end of file diff --git a/docs/README.md b/docs/README.md index 7da68ee1..556f5183 100644 --- a/docs/README.md +++ b/docs/README.md @@ -22,6 +22,26 @@ JWT_SECRET_KEY = "your-secret-key" # секретный ключ для JWT т SESSION_TOKEN_LIFE_SPAN = 60 * 60 * 24 * 30 # время жизни сессии (30 дней) ``` +### Реакции и комментарии + +Модуль обработки пользовательских реакций и комментариев. + +Основные возможности: +- Создание, обновление и удаление реакций (лайки, дизлайки, комментарии) +- Иерархические комментарии с пагинацией корневых и дочерних +- Расчет статистики (счетчик комментариев, рейтинг) +- Автоматическое добавление/снятие статуса "featured" для публикаций +- Оптимизация запросов с использованием distinct() для предотвращения дублирования + +Особенности реализации: +- Физическое удаление рейтинговых реакций и логическое удаление комментариев (поле deleted_at) +- Использование distinct() для предотвращения дублирования результатов при JOIN с eager loading +- Эффективная обработка иерархических данных с помощью специализированных GraphQL запросов + +Ключевые функции: +- `get_reactions_with_stat(q, limit, offset)` - получение реакций со статистикой +- `load_comments_branch(shout, parent_id, limit, offset, sort, children_limit, children_offset)` - загрузка иерархических комментариев с пагинацией + ### Административный интерфейс Основные возможности: diff --git a/resolvers/reaction.py b/resolvers/reaction.py index 6812604c..642aa8ed 100644 --- a/resolvers/reaction.py +++ b/resolvers/reaction.py @@ -79,7 +79,7 @@ def get_reactions_with_stat(q, limit=10, offset=0): >>> get_reactions_with_stat(q, 10, 0) # doctest: +SKIP [{'id': 1, 'body': 'Текст комментария', 'stat': {'rating': 5, 'comments_count': 3}, ...}] """ - q = q.limit(limit).offset(offset) + q = q.distinct().limit(limit).offset(offset) reactions = [] with local_session() as session: