Skip to content

Спринт 2: Архитектура сервис/хранилище, друзья и лайки (REST API апгрейд) - #2

Merged
ksupyl merged 29 commits into
mainfrom
add-friends-likes
Jun 6, 2026
Merged

ksupyl merged 29 commits into
mainfrom
add-friends-likes

Conversation

@ksupyl

@ksupyl ksupyl commented May 29, 2026

Copy link
Copy Markdown
Owner

Здравствуйте! 👋
Направляю на проверку второй этап проекта Filmorate.

Что было сделано:

  • Переработана архитектура: логика хранения вынесена из контроллеров
    в InMemoryFilmStorage и InMemoryUserStorage (интерфейсы FilmStorage,
    UserStorage), бизнес-логика — в FilmService и UserService.
  • Внедрение зависимостей через конструкторы (@service, @component,
    @Autowired); сервисы зависят от интерфейсов хранилищ.
  • Реализована логика друзей: добавление/удаление, список друзей,
    общие друзья (двусторонняя связь, Set).
  • Реализована логика лайков: добавление/удаление, топ-N фильмов
    по количеству лайков.
  • API доведён до REST: GET/PUT/DELETE по /users/{id}/friends/{friendId},
    GET /users/{id}/friends/common/{otherId}, PUT/DELETE /films/{id}/like/{userId},
    GET /films/popular?count={count}.
  • Централизованная обработка ошибок через ErrorHandler: 400, 404, 500.
  • Подключён logbook-spring-boot-starter для логирования HTTP-запросов
    и ответов.
  • Написаны Unit-тесты для FilmService и UserService.

Дополнительно:

  • Бизнес-правило «имя по умолчанию = логин» перенесено из хранилища
    в UserService.
  • Мутации коллекций (лайки, друзья) инкапсулированы в методах модели
    (Film.addLike/removeLike, User.addFriend/removeFriend).

Буду рада ревью и обратной связи!)

С уважением,
Ксения

ksupyl added 19 commits May 29, 2026 22:03
@ksupyl
ksupyl merged commit ea9471d into main Jun 6, 2026
2 checks passed
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