Аналог кинопоиска. REST API приложение с хранением информации о фильмах и пользователях в Базе Данных. (Sptring Boot, JUnit, Maven, JDBC, H2-database, SQL).
С помощью запросов к REST-контроллерам можно выполнять CRUD-операции с фильмами, жанрами, возрастными категориями, лайками, пользователями. Пользователи могут ставить фильмам лайки, добавляться друг к другу в друзья, сортировать фильмы по популярности.
SELECT *
FROM films;
film_id | name | description | release_date | duration | mpa_id |
---|---|---|---|---|---|
1 | Планета обезьян: Новое царство | Королю планеты обезьян удалось добиться стабильности в своём обществе. Годы правления привели к активному развитию. | 2024-05-8 | 107 | 1 |
2 | Иван Васильевич меняет профессию |
Советская фантастическая комедия 1973 года, снятая режиссёром Леонидом Гайдаем по мотивам пьесы Михаила Булгакова «Иван Васильевич» | 1973-09-17 | 88 | 2 |
SELECT *
FROM users;
user_id | login | name | birthday | |
---|---|---|---|---|
1 | Viktor@js.lol | user1 | Виктор | 1992-01-29 |
2 | Lena@js.lol | user1488 | Елена | 1997-09-32 |
3 | Ylia@mail.ru | yp | Юлия | 1998-13-42 |
SELECT *
FROM mpa_ratings;
mpa_id | name |
---|---|
1 | G |
2 | PG |
3 | PG-13 |
4 | R |
5 | NC-17 |
SELECT *
FROM genres;
name | genre_id |
---|---|
Комедия | 1 |
Драма | 2 |
Мультфильм | 3 |
Триллер | 4 |
Документальный | 5 |
Боевик | 6 |
SELECT f.name,
g.name
FROM films f
LEFT JOIN film_genres fg ON f.film_id = fg.film_id
LEFT JOIN genres g ON fg.genre_id = g.genre_id;
name | name |
---|---|
Планета обезьян: Новое царство | Драма |
Планета обезьян: Новое царство | Триллер |
Иван Васильевич меняет профессию |
Боевик |
SELECT f.name,
count(f.name) likes
FROM films f
LEFT JOIN likes l ON f.film_id = l.film_id
GROUP BY f.name
ORDER BY count(f.name) DESC;
name | likes |
---|---|
Планета обезьян: Новое царство | 2 |
Иван Васильевич меняет профессию |
1 |
SELECT *
FROM users
LEFT JOIN friendships f ON users.user_id = f.friend_id;
user_id | login | name | birthday | friendship_id | user_id | friend_id | is_confirmed | |
---|---|---|---|---|---|---|---|---|
1 | Viktor@js.lol | user1 | Виктор | 1992-01-29 | 2 | 2 | 1 | true |
1 | Viktor@js.lol | user1 | Виктор | 1992-01-29 | 3 | 3 | 1 | true |
2 | Lena@js.lol | user1488 | Елена | 1997-09-32 | 1 | 1 | 2 | true |
2 | Lena@js.lol | user1488 | Елена | 1997-09-32 | 4 | 3 | 2 | true |
3 | Ylia@mail.ru | yp | Юлия | 1998-13-42 | 5 | 1 | 3 | true |
3 | Ylia@mail.ru | yp | Юлия | 1998-13-42 | 6 | 2 | 3 | true |
SELECT *
FROM users
WHERE user_id IN (SELECT f.friend_id
FROM users u
JOIN friendships f ON u.user_id = f.user_id
WHERE u.user_id = 1);
user_id | login | name | birthday | |
---|---|---|---|---|
2 | Lena@js.lol | user1488 | Елена | 1997-09-32 |
3 | Ylia@mail.ru | yp | Юлия | 1998-13-42 |
SELECT *
FROM users
WHERE user_id IN
(SELECT friend_id
FROM users u
JOIN friendships f ON u.user_id = f.user_id
WHERE u.user_id = 1
AND f.is_confirmed = 'true')
AND user_id IN
(SELECT friend_id
FROM users u
JOIN friendships f ON u.user_id = f.user_id
WHERE u.user_id = 2
AND f.is_confirmed = 'true');
user_id | login | name | birthday | |
---|---|---|---|---|
3 | Ylia@mail.ru | yp | Юлия | 1998-13-42 |