- Full Rest API для работы с пользователями, фильмами, жанрами и директорами фильмов.
- Хранение данных в базе данных H2.
- Входные данные проходят валидацию.
- Реализовано логирование на Slf4j.
- Основные свойства фильма: название, описание, дата релиза, продолжительность.
- Дополнительные характеристики фильма: рейтинг на основе кол-ва лайков от пользователей, возрастные рекомендации для просмотра, жанр фильма.
- У фильмов реализовано свойство - режиссёр фильма с функциональностью:
- вывод всех фильмов режиссёра, отсортированных по количеству лайков.
- вывод всех фильмов режиссёра, отсортированных по годам.
- Основные свойства пользователя: e-mail, логин, имя, день рождения.
- Дополнительные связи пользователя: друзья, отзывы и лайки фильмам.
- В приложении есть возможность делать отзывы на фильмы. Добавленные отзывы имеют рейтинг и несколько дополнительных характеристик.
- В приложении есть возможность просмотра последних событий на платформе — добавления в друзья, удаления из друзей, лайки и отзывы, которые оставили друзья пользователя.
- В приложении есть возможность вывода общих с другом фильмов с сортировкой по их популярности.
- В приложении есть возможность выводить топ-N фильмов по количеству лайков с фильтрацией по жанру или году.
- Реализована простая рекомендательная система для фильмов на базе интересов и лайков друзей.
public class Practicum {
public static void main(String[] args) {
}
}Запрос фильма с MPA = "G":
SELECT films.*, m.* FROM films JOIN mpa m ON m.mpa_id = films.mpa_id WHERE m.name = 'G';
Запрос 10 наиболее популярных фильмов:
SELECT films.FILM_ID, films.name, description, release_date, duration, rate, m.mpa_id, m.name
FROM films
LEFT JOIN films_likes fl ON films.FILM_ID = fl.film_id
LEFT JOIN mpa m on m.MPA_ID = films.mpa_id
GROUP BY films.FILM_ID, fl.film_id IN (
SELECT film_id
FROM films_likes
)
ORDER BY COUNT(fl.film_id) DESC
LIMIT 10;
