Skip to content

Filmorate - бэкенд для сервиса, который работает с фильмами и оценками пользователей.

Notifications You must be signed in to change notification settings

Serg-Shapkin/Filmorate

Repository files navigation

Filmorate

(от англ. film - "фильм" и rate - "отслеживать")

Бэкенд для сервиса, который работает с фильмами и оценками пользователей.

Идея

Представьте, что после тяжелого рабочего дня вы решили отдохнуть и провести вечер за просмотром фильма. Вкусная еда уже готовится, любимый плед уютно свернулся на кресле — а вы всё ещё не выбрали, что же посмотреть! Фильмов много — и с каждым годом становится всё больше. Чем их больше, тем больше разных оценок. Чем больше оценок, тем сложнее сделать выбор. Однако не время сдаваться! Это приложение - бэкенд для сервиса, который работает с фильмами и оценками пользователей, а также возвращает топ-10 фильмов, рекомендованных к просмотру. Теперь ни вам, ни вашим друзьям не придётся долго размышлять, что посмотреть вечером.

Реализованный функционал

  1. Работа с пользователями (User):
    • Добавить пользователя. Эндпоинт: POST /users
    • Обновить данные о пользователе. Эндпоинт: PUT /users
    • Получить список всех пользователей. Эндпоинт: GET /users
    • Получить пользователя по id. Эндпоинт: GET /users/{id}
      (id пользователя передается в переменную пути)
    • Добавить пользователя в друзья. Эндпоинт: PUT /users/{id}/friends/{friendId}
      (id пользователей передаются в переменные пути)
    • Удалить пользователя из друзей. Эндпоинт: DELETE /users/{id}/friends/{friendId}
      (id пользователей передаются в переменные пути)
    • Получить список друзей пользователя. Эндпоинт: GET /users/{id}/friends
      (id пользователя передается в переменную пути)
    • Получить список общих друзей. Эндпоинт: GET /users/{id}/friends/common/{otherId}
      (id пользователей передаются в переменные пути)
  2. Работа с фильмами (Film):
    • Добавить фильм. Эндпоинт: POST /films
    • Обновить данные о фильме. Эндпоинт: PUT /films
    • Получить список всех фильмов. Эндпоинт: GET /films
    • Получить фильм по id. Эндпоинт: GET /films/{id}
      (id фильма передается в переменную пути)
    • Поставить лайк фильму. Эндпоинт: PUT /films/{id}/like/{userId}
      (id фильма и пользователя передаются в переменные пути)
    • Удалить лайк у фильма. Эндпоинт: DELETE /films/{id}/like/{userId}
      (id фильма и пользователя передаются в переменные пути)
    • Получить список самых популярных фильмов (на основе лайков). Эндпоинт: GET /films/popular
  3. Работа с жанрами фильмов (Genre):
    • Получить список всех жанров. Эндпоинт: GET /genres
    • Получить информацию о конкретном жанре фильма. Эндпоинт: GET /genres/{id}
      (id жанра фильма передается в переменную пути)
  4. Работа с рейтингом возрастных ограничений (MPA):
    • Получить список всех рейтингов возрастных ограничений. Эндпоинт: GET /mpa
    • Получить информацию о конкретном рейтинге возрастных ограничений. Эндпоинт: GET /mpa/{id}
      (id рейтинга возрастных ограничений передается в переменную пути)

База данных

В проекте используется база данных H2. Ниже представлена схема базы данных: ER_diagram_final

Тестирование

Тестировать приложение вручную — трудоёмкий процесс, который сопряжён со многими ограничениями. Использовать Postman-запросы проще, но такой способ не позволяет протестировать имплементацию методов. Реализовано интеграционное тестирование (англ. integration testing). С помощью него можно проверить работу приложения с зависимостями — например, с базой данных. Резидентная база данных обеспечит автономность ваших интеграционных тестов — перед каждым их запуском Spring будет создавать новую, чистую БД.

About

Filmorate - бэкенд для сервиса, который работает с фильмами и оценками пользователей.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages