Skip to content

Спринт 11 - Обновлена архитектура приложения - #2

Merged
milayadasha merged 3 commits into
mainfrom
add-friends-likes
Jan 13, 2026
Merged

milayadasha merged 3 commits into
mainfrom
add-friends-likes

Conversation

@milayadasha

Copy link
Copy Markdown
Owner
  1. Разделение архитектуры на три слоя: контроллеры, сервисы и хранилища для каждой сущности (фильм и пользователь):
  • контроллеры обрабатывают запрос и вызывают методы сервиса
  • на уровне сервиса обработка сущностей, их валидация
  • в хранилище логика по работе с объектами
  1. Добавлены новые методы по работе с фильмами (добавить лайк, убрать лайк, вывести самые популярные)
  2. Добавлены новые методы по работе с пользователями (добавить в друзья, убрать из друзей, вернуть всех друзей пользователя, вернуть общих друзей двух пользователей)
  3. Добавлены методы по возврату конкретного фильма/пользователя по id
  4. Добавлены новые тесты для нового функционала
  5. Добавлено доп. логирование

@maks-avilow maks-avilow left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Привет! В целом работа отличная. Но есть достаточно важный момент, который предлагаю доработать если получится

* Возвращает фильм по id
*/
@GetMapping("/{id}")
public ResponseEntity<Film> getFilmById(@PathVariable int id) {

@maks-avilow maks-avilow Dec 26, 2025 •

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Дарья привет. очень хорошая работа, написанная достаточно чисто. но я бы хотел оставить довольно важное замечание. Ты можешь попробовать выполнить его в этой итерации или если будут сложности, тогда в следующих спринтах. Но в любом случае это своеобразный стандарт и так или иначе это необходимо. Так о чем я?
Мы никогда не отдаем энтити в контроллерах. энтити мы используем только для работы с бд. когда происходит маппинг между таблицами и нашими сущностями при работе с ооп. далее в слоях с бизнес логикой происходит маппинг энтити-дто. обычно он происходит с помощью кодогенерирующих библиотек например mapStruct. Но на первых порах можно использовать обычные геттеры и сеттеры. Соответственно в контроллере мы всегда(если что-то отдаем конечно) отдаем объект dto. Причин появления концепции dto несколько, советую дополнительно изучить для понимания вопроса. Поэтому:
Введи DTO (Data Transfer Object) для данных, передаваемых по API. Например, FilmDto, UserDto. Контроллеры должны принимать и возвращать DTO. во всяком случае отдавать точно dto

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Привет. Спасибо за обратную связь и ценное замечание! Я уточнила у наставника. Он сказал, что DTO мы будем подробно изучать в следующих темах. Если ты не против, то я отложу это исправление на будущее, чтобы не переделывать лишний раз. У нас в ТЗ иногда чётко пишут "Создай класс с таким-то названием".
Надеюсь, что тебе ок такой вариант)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

да ок) принято!

@maks-avilow maks-avilow left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

зачет

@milayadasha
milayadasha merged commit c0889f4 into main Jan 13, 2026
2 checks passed
@milayadasha
milayadasha deleted the add-friends-likes branch January 13, 2026 11:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants