Conversation
Feat: Удаление фильмов и пользователей
Add most populars
1. controller - DirectorController 2. model - Director 3. service - DirectorService и DirectorServiceImpl 4. storage - DirectorStorage и DirectorDbStorage 5. validator - DateValidator и IsAfterDate Добавлен основной функционал: 1. Создание режиссёра 2. Получение режиссёра по id 3. Вывод списка всех режиссёров 4. Изменение режиссёра 5. Удаление режиссёра Дополнителный функционал: 1. Добавлена аннотация @IsAfterDate, которая решает часть проблем с тестами, связанными с датой. 2. Добавлены таблицы DIRECTOR и FILM_DIRECTOR в schema.sql, а также немного изменен порядок создания таблиц.
1. controller - DirectorController 2. model - Director 3. service - DirectorService и DirectorServiceImpl 4. storage - DirectorStorage и DirectorDbStorage 5. validator - DateValidator и IsAfterDate Добавлен основной функционал: 1. Создание режиссёра 2. Получение режиссёра по id 3. Вывод списка всех режиссёров 4. Изменение режиссёра 5. Удаление режиссёра Дополнителный функционал: 1. Добавлена аннотация @IsAfterDate, которая решает часть проблем с тестами, связанными с датой. 2. Добавлены таблицы DIRECTOR и FILM_DIRECTOR в schema.sql, а также немного изменен порядок создания таблиц.
1. Создание режиссёра 2. Получение режиссёра по id 3. Вывод списка всех режиссёров 4. Изменение режиссёра 5. Удаление режиссёра 6. Возвращает список фильмов режиссера отсортированных по количеству лайков или году выпуска. Дополнителный функционал: 1. Добавлена аннотация @IsAfterDate, которая решает часть проблем с тестами, связанными с датой. 2. Добавлены таблицы DIRECTOR и FILM_DIRECTOR в schema.sql, а также немного изменен порядок создания таблиц.
1. Создание режиссёра 2. Получение режиссёра по id 3. Вывод списка всех режиссёров 4. Изменение режиссёра 5. Удаление режиссёра 6. Возвращает список фильмов режиссера отсортированных по количеству лайков или году выпуска. Дополнителный функционал: 1. Добавлена аннотация @IsAfterDate, которая решает часть проблем с тестами, связанными с датой. 2. Добавлены таблицы DIRECTOR и FILM_DIRECTOR в schema.sql, а также немного изменен порядок создания таблиц.
# Conflicts: # src/main/java/ru/yandex/practicum/filmorate/controller/ReviewController.java # src/main/java/ru/yandex/practicum/filmorate/model/Review.java # src/main/java/ru/yandex/practicum/filmorate/service/review/ReviewService.java # src/main/java/ru/yandex/practicum/filmorate/storage/review/ReviewStorage.java # src/main/java/ru/yandex/practicum/filmorate/storage/review/dao/ReviewDbStorage.java # src/test/java/ru/yandex/practicum/filmorate/controller/ReviewDbStorageTest.java
1. Создание режиссёра 2. Получение режиссёра по id 3. Вывод списка всех режиссёров 4. Изменение режиссёра 5. Удаление режиссёра 6. Возвращает список фильмов режиссера отсортированных по количеству лайков или году выпуска. Дополнителный функционал: 1. Добавлена аннотация @IsAfterDate, которая решает часть проблем с тестами, связанными с датой. 2. Добавлены таблицы DIRECTOR и FILM_DIRECTOR в schema.sql, а также немного изменен порядок создания таблиц.
1. Создание режиссёра 2. Получение режиссёра по id 3. Вывод списка всех режиссёров 4. Изменение режиссёра 5. Удаление режиссёра 6. Возвращает список фильмов режиссера отсортированных по количеству лайков или году выпуска. Дополнителный функционал: 1. Добавлена аннотация @IsAfterDate, которая решает часть проблем с тестами, связанными с датой. 2. Добавлены таблицы DIRECTOR и FILM_DIRECTOR в schema.sql, а также немного изменен порядок создания таблиц.
Добавление режиссёров в фильмы. add-director
…ля getUserRecommendations
…ользователя getUserRecommendations
…ода getUserRecommendations. Добавить сам метод getUserRecommendations для получения рекомендаций фильмов для пользователя
…ия рекомендаций фильмов для пользователя
…и создания объектов путем создания копии через билдер.
…даций пользователей.
# Conflicts: # src/main/java/ru/yandex/practicum/filmorate/model/Review.java # src/main/resources/schema.sql
Add reviews
fix: восстановить потерянный при мердже эндпоинт getUserRecommendations
Нарисовал обновленную диаграмму БД
Расширен список таблиц, а также примеры запросов к ним
Чето все строчки поплыли, пытаюсь сделать красиво
"Примеры запросов" Теперь пишутся большими жирными буквами :)
Deathriot readme updates
Add feed v2
LexLippi
left a comment
There was a problem hiding this comment.
Привет!
Хорошая работа!
Есть некоторое количество замечаний, которые необходимо исправить!
Желаю удачи!
|
|
||
| @Data | ||
| @Builder | ||
| public class Director { |
There was a problem hiding this comment.
Классам с данными лучше всегда добавлять модификатор final, чтобы ограничивать возможность наследования
|
|
||
| @Data | ||
| @Builder | ||
| public class Review { |
|
|
||
| @Data | ||
| @Builder | ||
| public class Event { |
| public Collection<Film> getPopular(Integer count, Integer genreId, String year) { | ||
| if (year == null) { | ||
| return filmStorage.getPopularByGenre(count, genreId); | ||
| } else if (genreId == null) { |
There was a problem hiding this comment.
else не нужен, так как везде в ветках ранее происходит return. То есть вот эта запись эквивалентна тому, что написано:
if (year == null) {
return filmStorage.getPopularByGenre(count, genreId);
}
if (genreId == null) {
return filmStorage.getPopularByYear(count, year);
}
return filmStorage.getPopularByGenreAndYear(count, genreId, year);Однако цикломатическая сложность у такого подхода ниже, что повышает читаемость кода
| if (sortBy.equals("year")) { | ||
| return filmStorage.getByDirectorSortByYear(id); | ||
| } else if (sortBy.equals("likes")) { | ||
| return filmStorage.getByDirectorSortByLikes(id); | ||
| } else { | ||
| throw new IllegalArgumentException("Wrong sort format"); | ||
| } |
| .usingGeneratedKeyColumns("REVIEW_ID"); | ||
|
|
||
| Integer reviewId = simpleJdbcInsert.executeAndReturnKey(toMap(review)).intValue(); | ||
| return getReviewById(reviewId); |
There was a problem hiding this comment.
Точно ли нам при выходе надо делать запрос на получение объекта?
Его можно сконструировать из только что вставленного + того идентификатора, который нам вернул jdbcTemplate, таким образом мы сэкономим на одном запросе к СУБД, иногда это может быть очень важно с точки зрения производительности
| review.getIsPositive(), | ||
| review.getReviewId()); | ||
|
|
||
| return getReviewById(review.getReviewId()); |
There was a problem hiding this comment.
К сожалению, здесь так не получится. Так или иначе придется выгружать из БД ревью с этим айди, тк не всем полям разрешено обновляться через апдейт (userId, filmId, useful). Так же, нельзя запрещать менять эти поля, так как тесты постмана ждут ответ 200.
|
|
||
| @Override | ||
| public Collection<Review> getAllReviews(Integer count) { | ||
| String sql = "SELECT * FROM REVIEWS ORDER BY USEFUL DESC LIMIT ?;"; |
There was a problem hiding this comment.
Лучше fetch first ? rows only, так как оператор limit не определен в sql-стандарте и при переходе на другую СУБД запрос может поломаться
| @Override | ||
| public Collection<Review> getAllReviewsOfFilm(Integer filmId, Integer count) { | ||
| filmStorage.checkFilmExist(filmId); | ||
| String sql = "SELECT * FROM REVIEWS WHERE FILM_ID=? ORDER BY USEFUL DESC LIMIT ?;"; |
| String sql = "SELECT IS_POSITIVE FROM USER_REVIEW_RATE WHERE REVIEW_ID=? AND USER_ID=?"; | ||
| SqlRowSet userRate = jdbcTemplate.queryForRowSet(sql, reviewId, userId); | ||
|
|
||
| if (!userRate.next()) |
There was a problem hiding this comment.
Советую всегда использовать фигурные скобки в соответствии с
Google Java Code Style
|
Привет! Хорошая работа! Поздравляю всех с окончанием группового проекта и желаю удачи! |
Все тесты пройдены, заливаем все в мейн!