Skip to content

About

This application allows users to search and rate movies, as well add each other as friends.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Repository files navigation

Модуль №3 java-filmorate

Бэкенд для сервиса, который будет работать с фильмами и оценками пользователей, а также возвращать топ лучших фильмов, рекомендованных к просмотру.

Спринт 9
  1. Модели данных — Film и User
  2. Хранение данных в памяти приложения
  3. REST-контроллеры: FilmController будет обслуживать фильмы, а UserController — пользователей.
  4. Валидация данных, которые приходят в запросе на добавление нового фильма или пользователя. Проверяется тестами Unit5
  5. Логирование
Спринт 10
  1. Архитектура и новая логика проекта: интерфейсы FilmStorage и UserStorage, классы InMemoryFilmStorage и InMemoryUserStorage, классы UserService и FilmService.
  2. Зависимости -> @Service, @Component, @Autowired
  3. API -> соответствие REST
  4. ExceptionHandler для централизованной обработки ошибок
Спринт 11: Промежуточное ТЗ
  1. Проектирование базы данных, создание схемы
  2. Примеры запросов для основных операций приложения.
Спринт 11: Итоговое ТЗ
  1. ...
  2. ...

ER диаграмма базы данных и примеры запросов

модель


Получение списка всех фильмов
SELECT * 
FROM films;
Запрос на вывод фильма по id
SELECT * 
FROM films 
WHERE film_id = <id> 
Вывод 10 самых популярных фильмов
SELECT films.film_id, 
films.name, 
COUNT(*) as likes_count 
FROM film_likes JOIN films ON film_likes.film_id = films.film_id 
GROUP BY films.film_id, films.name 
ORDER BY likes_count DESC
LIMIT 10;
Запрос на вывод всех пользователей
SELECT * 
FROM users;
Вывод пользователя по id
SELECT * 
FROM users 
WHERE user_id = <id>;
Вывод всех друзей определенного пользователя
SELECT users.name, friends.friend_id, friends.frienship_status
FROM friends JOIN users ON friends.friend_id = users.user_id 
WHERE friends.user_id = <user_id>;
-- <user_id> - это значение id пользователя, для которого мы хотели бы получить его друзей.
Вывод общих друзей для двух пользователей (например, с id 1 и 2)
SELECT f1.friend_id 
FROM friends f1 JOIN friends f2 ON f1.friend_id = f2.friend_id 
WHERE f1.user_id = 1 
AND f2.user_id = 2;
Получение списка фильмов, вышедших в определенном году
  SELECT f.name, 
  EXTRACT(YEAR FROM f.release_date) AS release_year,
  FROM films f 
  WHERE f.release_year = 2020;
Получение списка друзей для заданного пользователя
  SELECT us.name 
  FROM friends fr 
  INNER JOIN users us ON us.user_id = fr.friend_id 
  WHERE fr.user_id = 12;
Получение списка фильмов определенного жанра
  SELECT f.name AS title, 
  EXTRACT(YEAR FROM f.release_date) AS release_year, 
  g.name AS genre
  FROM films f
  INNER JOIN film_genre fg ON fg.film_id = f.film_id
  INNER JOIN genre g ON g.genre_id = fg.genre_id
  WHERE g.name = 'Комедия';
Количество пользователей, у которых день рождения сегодня
  SELECT COUNT(user_id) 
  FROM users 
  WHERE EXTRACT(DAY FROM birthday) = EXTRACT(DAY FROM NOW())
  AND EXTRACT(MONTH FROM birthday) = EXTRACT(MONTH FROM NOW());

About

This application allows users to search and rate movies, as well add each other as friends.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages