Skip to content

Repository files navigation

Проект java-filmorate

Сервис для хранения фильмов

Предназначен для оценки и рекомендации фильмов между пользователями.

Основная функциональность:

  • Регистрация пользователей, получение информации о уже зарегестрированных пользователях, добавление других пользователей в список друзей
  • Добавление, редактирование и удаление фильмов из базы данных
  • Поиск фильмов по названию и режиссёру
  • Добавление отзывов на фильмы от пользователей
  • Просмотр ленты событий пользователей по их действиям на платформе
  • Получение рекомендаций по фильмам на основе списка друзей

Вся информация хранится в базе данных со следующей структурой:

Database structure

Диаграмма сожержит следующие таблицы:

films
Содержит информацию о фильмах.
Таблица состоит из полей:
первичный ключ film_id — идентификатор фильма;
name — название фильма;
description — описание фильма;
releaseData — год выхода;
duration — продолжительность фильма в минутах;
rating — возрастной рейтинг;

film_genre
Сожердит информацию о жанрах фильмов
film_id — идентификатор фильма;
genre_id — идентификатор жанра;

genre
Содержит список жанров фильмов
genre_id — идентификатор жанра;
genre - название жанра;

likes
Сожержит список людей, которым понравился конкретный фильм
film_id — идентификатор фильма;
user_id — идентификатор пользователя;

users
user_id — идентификатор пользователя;
email - почтовый адрес пользователя;
login - login пользователя;
name - имя пользователя;
birthday - дата рождения;

friends
user_id — идентификатор пользователя;
friend_id — идентификатор друга пользователя;
status - статус дружбы: подтвержденная, неподтвержденная;

Примеры запросов

Список подтвержденных друзей пользователя с id = 1

SELECT friend_id  
FROM friends  
WHERE user_id = 1  
AND status = 'confirmed';  

10 фильмов с максимальным количеством лайков

SELECT f.name  
FROM films AS f  
RIGHT OUTER JOIN likes AS l ON f.film_id = l.film_id  
GROUP BY l.film_id  
ORDER BY SUM(user_id) DESC  
LIMIT 10;  

Список комедий

SELECT name  
FROM films  
WHERE film_id IN (SELECT fg.film_id  
FROM film_genre AS fg  
RIGHT OUTER JOIN genre AS g ON fg.genre_id = g.genre_id  
WHERE g.genre = 'COMEDY');  

Стек:

Java 11, REST, Maven, Lombok, Junit5, Mockito, SQL, взаимодействие с БД через JDBC

About

Сервис для оценки и рекомендации фильмов

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages