Проект является backend-сервисом для получения топа фильмов, рекомендованных к просмотру на основе пользовательских оценок.
Технологический стек: Java 21, Spring Boot, Apache Maven, REST, Postman, Lombok, JUnit 5.
Спринт 4:
- Переработана архитектура проекта;
- Добавлены новые модели: MPA-рейтинг, Genre, Likes, Friendship;
- Добавлен слой DAL для работы с данными из базы данных;
- Добавлен маппинг для преобразования записей из базы данных в объекты и обратно;
- Написаны интеграционные тесты;
- Добавлены тестовые хранилища для unit-тестов;
- Переработаны unit-тесты для граничных условий с учетом новой архитектуры проекта;
- Этап 1:
- Создание каркаса приложения с использользованием Spring Boot;
- Вся логика и хранение данных находятся в контроллерах;
- Разработан базовый функционал: добавление, обновление и получение всех фильмов/пользователей;
- Написаны unit-тесты для текущего функционала.
- Этап 2:
- Добавлены классы-хранилища для работы с данными о фильмах и пользователях;
- Добавлен новый функционал, позволяющий добавлять друзей и ставить лайки фильмам;
- Добавлены аннотации @service и @component для внедрения зависимостей;
- В классы контроллеры добавлена аннотация @ResponseStatus для указания HTTP-статуса ответа, который должен вернуться при обработке запроса;
- Добавлены классы ErrorHandler и ErrorResponse для централизованной обработки ошибок;
- Добавлены unit-тесты для нового функционала.
- Этап 3. Промежуточное задание:
- Спроектирована будущая база данных;
- Создана ER-диаграмма базы данных.
- Получить всех пользователей, кто родился не раньше 1995 года
SELECT u.user_id, u.email, u.login, u.name, u.birthday
FROM users AS u
WHERE EXTRACT(YEAR
FROM birthday) >= 1995
ORDER BY birthday- Получить фильмы, у которых не меньше двух лайков
SELECT f.film_id,
f.name AS title,
f.description,
f.release_date,
m.name AS mpa_rating,
COUNT(l.user_id) AS likes_count
FROM films AS f
LEFT JOIN likes l ON f.film_id = l.film_id
JOIN mpa_rating AS m ON f.rating_id = m.rating_id
GROUP BY f.film_id, m.name
HAVING COUNT(l.user_id) >= 2
ORDER BY likes_count DESC;- Получить пользователей, у которых яндекс почта
SELECT u.user_id,
u.email,
u.login,
u.name
FROM users AS u
WHERE email LIKE '%yandex%' OR email LIKE '%@ya.ru%'
ORDER BY user_id