Социальная сеть по оценке фильмов пользователями. В ней можно дружить
- 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 — получение списка всех пользователей.
- POST /films — Добавление фильма.
- PUT /films — Обновляет фильма.
- PUT /films/{id}/like/{userId} — Пользователь ставит лайк фильму.
- DELETE /films/{id}/like/{userId} — Пользователь удаляет лайк.
- GET /films — Возвращает список всех фильмов
- GET /films/popular?count={count} — Возвращает список из первых count* фильмов по количеству лайков.
-
- Если значение параметра count не задано, вернуть первые 10.
- GET /genres/{id} — получение существующего жанра.
- GET /genres — получение списка всех жанров.
- GET /mpa/{id} — получение существующего рейтинга.
- GET /mpa — получение списка всех рейтингов.
- Настройка Maven.
- SpringBoot.
- Создание модели приложения.
- Примитивный функционал обслуживание данных в памяти.
- Расширение модели: добавлены Friends для User и Likes для Film.
- Расширение функционала контроллеров.
- Изменена реализация работы со всеми предыдущими моделями (а именно Film и User) на работу в базе данных (далее сокращённо БД).
- Добавлена возможность оставлять симпатии пользователей к фильмам.
- Изменён функционал работы Друзья. Теперь дружба пользователей не может быть взаимной по умолчанию. Больше похоже на подписку.
- Расширение модели: Genres. Добавлены жанры к фильмам. Изменение и добавление новых жаров не предусмотрено техническим заданием.
- Расширение модели: MPARating. Добавлены рейтинги к фильмам. Изменение и добавление новых рейтингов не предусмотрено техническим заданием.
Сейчас данные можно хранить в переменных Map<Long , T>,
где Long — ключ (идентификатор объекта), а T — сам объект (User или Film);
Доступ к объектам предоставляется по ключу.
Сейчас данные можно хранить в БД.
Для добавления и редактирования (в будущем и удаления) записей используется контроллер.
Изменена архитектура приложения с помощью внедрения зависимостей.
Принцип работы приложения разделён на слои:
- storage @Component — слой хранения данных (далее будет реализовано хранить данные в долговременном хранилище, чтобы они не зависели от перезапуска приложения.)
- service @Service — сервисный слой. Обеспечивает безопасность сохранности данных в процессе работы приложения.
- controller @RestController — обслуживание данных в хранении через сервисный слой.
- Идентификатор — id : Long. Условие: Positive
- Электронная почта — email : String. Условие: Pattern(Email)
- Логин — login : String. Условие: NoSpaces, Size[3..20]
- Имя — name : String.
- Дата рождения — birthday : LocalDate. Условие: Past
Список друзей — friends : Set.Update: Реализовано в БД. Это поле более не актуально.
- Идентификатор — 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: Реализовано в БД. Это поле более не актуально.
- Идентификатор — id : Long. Условие: Positive
- Название — name : String. Условие: NotBlank
- Идентификатор — id : Long. Условие: Positive
- Название — name : String. Условие: NotBlank
- Описание — description : String. Условие: NotBlank
- Идентификатор фильма — filmId : Long. Условие: Positive, NotNull
- Жанр — genre : Genre. Условие: Positive, NotNull