generated from yandex-praktikum/java-explore-with-me-plus
-
Notifications
You must be signed in to change notification settings - Fork 1
Closed
3 / 33 of 3 issues completed
Copy link
Description
Зависимости:
COMMENTS-CORE: Сущность Comment, репозиторий и базовый маппинг(полностью).- Существующие
EventRepository,UserRepository. GlobalExceptionHandlerдля обработки ошибок.
Описание Задачи:
Реализовать эндпоинт POST /users/{userId}/comments?eventId={eventId} и соответствующую сервисную логику для создания нового комментария авторизованным пользователем.
Основные шаги:
- Service (
CommentServiceинтерфейс иCommentServiceImpl):- Создать метод
addComment(Long userId, Long eventId, NewCommentDto newCommentDto). - Логика:
- Найти
UserпоuserId(автор). Если не найден ->EntityNotFoundException. - Найти
EventпоeventId. Если не найден ->EntityNotFoundException. - Проверить, что событие
PUBLISHED. Если нет ->BusinessRuleViolationException(409 Conflict). - Проверить, что у события
commentsEnabled == true. Если нет ->BusinessRuleViolationException(409 Conflict). - Создать сущность
CommentизNewCommentDto(используяCommentMapper). - Установить
authorиeventдля комментария. - Сохранить комментарий через
CommentRepository. - Вернуть
CommentDtoсозданного комментария (черезCommentMapper).
- Найти
- Создать метод
- Controller (
PrivateCommentController):- Создать контроллер и эндпоинт
POST /users/{userId}/comments. - Принимает
@PathVariable Long userId,@RequestParam Long eventId,@Valid @RequestBody NewCommentDto newCommentDto. - Вызывает метод сервиса.
- Возвращает
ResponseEntity<CommentDto>со статусом201 CREATED.
- Создать контроллер и эндпоинт
- Тесты: Юнит-тесты для сервиса и контроллера.
Критерии готовности:
- Эндпоинт
POST /users/{userId}/comments?eventId={eventId}реализован и работает. - Выполняются все проверки (существование пользователя/события, статус события, разрешение комментариев).
- Новый комментарий корректно сохраняется в БД.
- Возвращается
CommentDtoс кодом201. - Написаны юнит-тесты.