Skip to content

Comments Admin API: Получение списка комментариев с фильтрацией#101

Merged
impatient0 merged 13 commits intofeaturefrom
feature_ivan_admin-comment-search
Jun 1, 2025
Merged

Comments Admin API: Получение списка комментариев с фильтрацией#101
impatient0 merged 13 commits intofeaturefrom
feature_ivan_admin-comment-search

Conversation

@impatient0
Copy link
Owner

Описание

Данный Pull Request реализует эндпоинт для администраторов (GET /admin/comments), позволяющий получать список всех комментариев с возможностью фильтрации и пагинации.

Ключевые изменения:

  1. Репозиторий (CommentRepository):

    • Интерфейс CommentRepository теперь расширяет QuerydslPredicateExecutor<Comment> для поддержки динамических запросов.
    • Добавлена аннотация @EntityGraph(attributePaths = {"author"}) к методу findAll(Predicate, Pageable) для решения проблемы N+1 при загрузке авторов комментариев.
  2. Сервисный слой (CommentServiceImpl):

    • Реализован метод getAllCommentsAdmin(AdminCommentSearchParams searchParams, int from, int size).
    • Используется QueryDSL (BooleanBuilder, QComment) для динамического построения предиката на основе параметров фильтрации: userId (автор), eventId (событие), isDeleted (статус удаления).
    • Применяется пагинация и сортировка по умолчанию (по createdOn DESC).
    • Результат маппится в List<CommentDto> с использованием CommentMapper.
  3. DTO для параметров поиска:

    • Создан класс AdminCommentSearchParams для инкапсуляции параметров фильтрации.
  4. Контроллер (AdminCommentController):

    • Реализован эндпоинт GET /admin/comments.
    • Принимает опциональные query-параметры userId, eventId, isDeleted и параметры пагинации from, size.
    • Передает параметры в сервисный слой через AdminCommentSearchParams.
  5. Тестирование:

    • Добавлены юнит-тесты для CommentServiceImpl (проверка логики построения предиката QueryDSL и вызова репозитория).
    • Добавлены юнит-тесты для AdminCommentController (@WebMvcTest), проверяющие маппинг запроса, передачу параметров в сервис и обработку ответов.
    • Добавлены/обновлены интеграционные тесты для CommentServiceImpl (@SpringBootTest с Testcontainers), проверяющие корректность фильтрации QueryDSL на реальной базе данных.

Примечания:

  • Логика обработки параметра isDeleted в сервисе: если параметр не передан (null), фильтр по isDeleted не применяется (возвращаются и удаленные, и не удаленные комментарии). Если передан true или false, происходит соответствующая фильтрация.

Copy link
Collaborator

@SergikF SergikF left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

я не придираюсь ... я завидую белой завистью и понимаю, что мне ещё расти и расти ...

Copy link
Collaborator

@progingir progingir left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

пару моментов откомментила

@Peppe-Ronin Peppe-Ronin force-pushed the feature_ivan_admin-comment-search branch from 3910f06 to 3081dd8 Compare June 1, 2025 12:03
@impatient0 impatient0 merged commit e56a1b3 into feature Jun 1, 2025
2 checks passed
@impatient0 impatient0 deleted the feature_ivan_admin-comment-search branch June 1, 2025 12:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

COMMENTS-ADMIN: Получение списка всех комментариев с фильтрами

5 participants