Skip to content

Add search - #19

Merged
Roman32-gif merged 9 commits into
developfrom
add-search
Oct 11, 2026
Merged

Roman32-gif merged 9 commits into
developfrom
add-search

Conversation

@Roman32-gif

Copy link
Copy Markdown
Collaborator

Реализовал поиск по названию фильмов и по режиссёру

Алгоритм умеет искать по подстроке. Например, вы вводите «крад», а в поиске возвращаются следующие фильмы: «Крадущийся тигр, затаившийся дракон», «Крадущийся в ночи» и другие.

API

GET /fimls/search

Возвращает список фильмов, отсортированных по популярности.

Параметры строки запроса

query — текст для поиска

by — может принимать значения director (поиск по режиссёру), title (поиск по названию), либо оба значения через запятую при поиске одновременно и по режиссеру и по названию.

Пример

GET /films/search?query=крад&by=director,title

Дополнительно создал 3 теста: поиск по названию, поиск по режиссёру, поиск по названию и режиссёру.

@ksupyl ksupyl linked an issue Oct 9, 2026 that may be closed by this pull request

@ksupyl ksupyl left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Рома, поиск классный!
Регистр не важен, сортировка по популярности, жанры и режиссёры у найденных фильмов подгружаются, и тесты на название, режиссёра и оба сразу есть.

Одна вещь до мержа - не в коде, а в ветке.
В 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")) {

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Здесь 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");

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Классно, что COUNT(DISTINCT ...): из-за JOIN с режиссёрами у фильма с двумя режиссёрами каждый лайк иначе посчитался бы дважды 👍

@ksupyl

ksupyl commented Oct 9, 2026

Copy link
Copy Markdown
Owner

Поправка к ревью
Даша скоро вольёт ленту, и если ты будешь подтягивать develop уже после неё, "Accept Yours" везде не подойдёт - Даша меняла два из тех же файлов:

— FilmController, FilmDbStorage, FilmStorage, FilmDbStorageTest - Accept Yours, как и писала;
— schema.sql - Accept Theirs (версия develop): там Дашина таблица feed_events, а в схеме у тебя для поиска ничего не менялось;
— FilmService - нужно и твоё, и Дашино.
В окне Merge оставь её строки про ленту (импорт EventType, поле feedService и присваивание в конструкторе) и свои validateSearchParameters и searchFilms.
В самом конструкторе бери версию develop: в ней и DirectorService, и FeedService.

Если где-то промахнёшься - не страшно: тогда не соберётся проект или упадут тесты ленты, и CI покажет это красным ещё до мержа)

@ksupyl ksupyl left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Рома, ветку обновил идеально!
В PR теперь только поиск, и ничего чужого не задето. 100% апрув!

Как Даша посмотрит - вливай через Squash and merge с заголовком
feat: add film search by title and director (#19)

@Roman32-gif
Roman32-gif merged commit ef7c0e2 into develop Oct 11, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Функциональность «Поиск». 3SP

3 participants