Repository navigation
Add search - #19
Add search#19
Conversation
ksupyl
left a comment
There was a problem hiding this comment.
Рома, поиск классный!
Регистр не важен, сортировка по популярности, жанры и режиссёры у найденных фильмов подгружаются, и тесты на название, режиссёра и оба сразу есть.
Одна вещь до мержа - не в коде, а в ветке.
В Files changed сейчас 16 файлов, и среди них все режиссёры заново, а в Commits - твои коммиты из add-director.
Похоже, add-search сделана от старой add-director, ещё до того, как режиссёры влились в develop.
Squash and merge создаёт в develop новый коммит, и Git не знает, что твои старые коммиты уже там, - отсюда и конфликты. А пока они есть, CI не запускается.
Как починить: подтяни develop в add-search и в конфликтах выбирай свою версию (Accept Yours) - в ней уже есть всё из develop плюс поиск.
Тогда в PR останется только поиск. Запушь и дождись CI.
На будущее: новую ветку лучше создавать от свежего develop.
| List<String> conditions = new ArrayList<>(); | ||
| List<Object> params = new ArrayList<>(); | ||
|
|
||
| if (by.contains("director")) { |
There was a problem hiding this comment.
Здесь by.contains(...) учитывает регистр, а в validateSearchParameters проверка через equalsIgnoreCase. Из-за этого by=Title проходит валидацию, но тут не находит ни одного условия - и в ответ 400 «Необходимо указать поиск». Не блокирует, но правило лучше сделать одним в обоих местах.
|
|
||
| sql.append("GROUP BY f.id, f.name, f.description, f.release_date, ") | ||
| .append("f.duration, f.mpa_id, m.name ") | ||
| .append("ORDER BY COUNT(DISTINCT fl.user_id) DESC, f.id"); |
There was a problem hiding this comment.
Классно, что COUNT(DISTINCT ...): из-за JOIN с режиссёрами у фильма с двумя режиссёрами каждый лайк иначе посчитался бы дважды 👍
|
Поправка к ревью — FilmController, FilmDbStorage, FilmStorage, FilmDbStorageTest - Accept Yours, как и писала; Если где-то промахнёшься - не страшно: тогда не соберётся проект или упадут тесты ленты, и CI покажет это красным ещё до мержа) |
Реализовал поиск по названию фильмов и по режиссёру
Алгоритм умеет искать по подстроке. Например, вы вводите «крад», а в поиске возвращаются следующие фильмы: «Крадущийся тигр, затаившийся дракон», «Крадущийся в ночи» и другие.
API
GET /fimls/search
Возвращает список фильмов, отсортированных по популярности.
Параметры строки запроса
query — текст для поиска
by — может принимать значения director (поиск по режиссёру), title (поиск по названию), либо оба значения через запятую при поиске одновременно и по режиссеру и по названию.
Пример
GET /films/search?query=крад&by=director,title
Дополнительно создал 3 теста: поиск по названию, поиск по режиссёру, поиск по названию и режиссёру.