Skip to content

Latest commit

 

History

History
57 lines (42 loc) · 2.17 KB

README.md

File metadata and controls

57 lines (42 loc) · 2.17 KB

java-filmorate сервис по оценке фильмов

Сервис позволяет добавлять/обновлять/удалять фильмы, ставить/убирать лайк фильму, добавлять/удалять друзей, получение общего списка друзей

Cтек технологий: Spring-Boot, Lombok, H2database; JDK 11
Запустить сервис можно в IntelliJ IDEA: Запустите класс FilmorateApplication в папке java-filmorate\src\main\java\ru\yandex\practicum\filmorate\

Схема БД сервиса

Все взаимодействие сервиса с БД происходит посредством SQL-запросов. Ниже представлены примеры таких запросов

Получение топ-10 названий фильмов по количеству лайков

SELECT f.name
FROM films AS f
WHERE film_id IN
  (SELECT film_id
   FROM film_likes
   GROUP BY film_id
   ORDER BY COUNT(user_id) desc
   LIMIT 10);

Получение возрастных рейтингов фильмов из списка топ-10

SELECT r.rating_name
FROM films AS f
LEFT OUTER JOIN film_rating AS fr ON f.film_id = fr.film_id
LEFT OUTER JOIN rating AS r ON fr.rating_id = r.rating_id
WHERE film_id IN
  (SELECT film_id
   FROM film_likes
   GROUP BY film_id
   ORDER BY COUNT(user_id) DESC
   LIMIT 10);

Получение количества лайков к фильму с id = 1

SELECT COUNT(user_id)
FROM film_likes
WHERE film_id = 1;

Получение id и логинов подтвержденных друзей пользователя c id = 1

SELECT u.user_id,
    u.login
FROM users AS u
WHERE u.user_id IN
  (SELECT f.friend_id
   FROM user_friendship AS uf
   LEFT OUTER JOIN friendship as f ON uf.friendship_id = f.friendship_id
   WHERE uf.user_id = 1 AND f.status = 'ACCEPTED');