Skip to content

ilya-noize/java-filmorate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project java-filmorate

Социальная сеть по оценке фильмов пользователями. В ней можно дружить

Table of contents

API

User

  • POST /users — создание пользователя;
  • PUT /users — обновление пользователя;
  • PUT /users/{id}/friends/{friendId} — добавление в друзья.
  • DELETE /users/{id}/friends/{friendId} — удаление из друзей.
  • GET /users/{id}/friends — возвращаем список пользователей, являющихся его друзьями.
  • GET /users/{id}/friends/common/{otherId} — список общих друзей с другим пользователем.
  • GET /users — получение списка всех пользователей.

Film

  • POST /films — Добавление фильма.
  • PUT /films — Обновляет фильма.
  • PUT /films/{id}/like/{userId} — Пользователь ставит лайк фильму.
  • DELETE /films/{id}/like/{userId} — Пользователь удаляет лайк.
  • GET /films — Возвращает список всех фильмов
  • GET /films/popular?count={count} — Возвращает список из первых count* фильмов по количеству лайков.
    • Если значение параметра count не задано, вернуть первые 10.

Genre

  • GET /genres/{id} — получение существующего жанра.
  • GET /genres — получение списка всех жанров.

MPARating

  • GET /mpa/{id} — получение существующего рейтинга.
  • GET /mpa — получение списка всех рейтингов.

Branches Developer

  • Настройка Maven.
  • SpringBoot.
  • Создание модели приложения.
  • Примитивный функционал обслуживание данных в памяти.

  • Расширение модели: добавлены Friends для User и Likes для Film.
  • Расширение функционала контроллеров.

  • Изменена реализация работы со всеми предыдущими моделями (а именно Film и User) на работу в базе данных (далее сокращённо БД).
  • Добавлена возможность оставлять симпатии пользователей к фильмам.
  • Изменён функционал работы Друзья. Теперь дружба пользователей не может быть взаимной по умолчанию. Больше похоже на подписку.
  • Расширение модели: Genres. Добавлены жанры к фильмам. Изменение и добавление новых жаров не предусмотрено техническим заданием.
  • Расширение модели: MPARating. Добавлены рейтинги к фильмам. Изменение и добавление новых рейтингов не предусмотрено техническим заданием.

Хранение данных

Сейчас данные можно хранить в переменных Map<Long , T>, где Long — ключ (идентификатор объекта), а T — сам объект (User или Film); Доступ к объектам предоставляется по ключу.

Сейчас данные можно хранить в БД.
Для добавления и редактирования (в будущем и удаления) записей используется контроллер.

Улучшение API приложения до соответствия REST.

Изменена архитектура приложения с помощью внедрения зависимостей.

Принцип работы приложения разделён на слои:

  • storage @Component — слой хранения данных (далее будет реализовано хранить данные в долговременном хранилище, чтобы они не зависели от перезапуска приложения.)
  • service @Service — сервисный слой. Обеспечивает безопасность сохранности данных в процессе работы приложения.
  • controller @RestController — обслуживание данных в хранении через сервисный слой.

Models

User

  • Идентификатор — id : Long. Условие: Positive
  • Электронная почта — email : String. Условие: Pattern(Email)
  • Логин — login : String. Условие: NoSpaces, Size[3..20]
  • Имя — name : String.
  • Дата рождения — birthday : LocalDate. Условие: Past
  • Список друзей — friends : Set. Update: Реализовано в БД. Это поле более не актуально.

Film

  • Идентификатор — id : Long. Условие: Positive
  • Название — name : String. Условие: NotBlank
  • Описание — description : String. Условие: Size=200
  • Дата релиза — releaseDate : LocalDate. Условие: After 28 DEC 1895
  • Продолжительность фильма — duration : int. Условие: Positive
  • Update: Рейтинг Ассоциации кинематографистов – mpaRating : MPARating Условие: NotNull
  • Update: Список жанров – genres : List
  • Идентификаторы пользователей, поставивших like фильму — likes : Set. Update: Реализовано в БД. Это поле более не актуально.

Genre

  • Идентификатор — id : Long. Условие: Positive
  • Название — name : String. Условие: NotBlank

MPARating

  • Идентификатор — id : Long. Условие: Positive
  • Название — name : String. Условие: NotBlank
  • Описание — description : String. Условие: NotBlank

FilmGenres

  • Идентификатор фильма — filmId : Long. Условие: Positive, NotNull
  • Жанр — genre : Genre. Условие: Positive, NotNull

About

Template repository for Filmorate project.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages