From 23edce7dced50edb360672005d4a190d1bc2481a Mon Sep 17 00:00:00 2001 From: Radek Davidek Date: Wed, 4 Mar 2026 17:03:08 +0100 Subject: [PATCH] fixed fav search --- .../kamma/xtreamplayer/LibraryRepository.java | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/src/main/java/cz/kamma/xtreamplayer/LibraryRepository.java b/src/main/java/cz/kamma/xtreamplayer/LibraryRepository.java index ae94f3b..8b641cb 100644 --- a/src/main/java/cz/kamma/xtreamplayer/LibraryRepository.java +++ b/src/main/java/cz/kamma/xtreamplayer/LibraryRepository.java @@ -442,12 +442,45 @@ final class LibraryRepository { OR LOWER(mode) LIKE ? OR LOWER(url) LIKE ? OR LOWER(favorite_key) LIKE ? + OR ( + mode = 'live_category' + AND EXISTS ( + SELECT 1 + FROM live_streams ls + WHERE ls.category_id = favorites.ref_id + AND (LOWER(ls.name) LIKE ? OR LOWER(ls.stream_id) LIKE ?) + ) + ) + OR ( + mode = 'vod_category' + AND EXISTS ( + SELECT 1 + FROM vod_streams vs + WHERE vs.category_id = favorites.ref_id + AND (LOWER(vs.name) LIKE ? OR LOWER(vs.stream_id) LIKE ?) + ) + ) + OR ( + mode = 'series_category' + AND EXISTS ( + SELECT 1 + FROM series_items si + WHERE si.category_id = favorites.ref_id + AND (LOWER(si.name) LIKE ? OR LOWER(si.series_id) LIKE ?) + ) + ) """); String value = "%" + search + "%"; args.add(value); args.add(value); args.add(value); args.add(value); + args.add(value); + args.add(value); + args.add(value); + args.add(value); + args.add(value); + args.add(value); } sql.append(" ORDER BY created_at DESC, favorite_key LIMIT ? OFFSET ?"); try (Connection connection = openConnection(); @@ -495,12 +528,45 @@ final class LibraryRepository { OR LOWER(mode) LIKE ? OR LOWER(url) LIKE ? OR LOWER(favorite_key) LIKE ? + OR ( + mode = 'live_category' + AND EXISTS ( + SELECT 1 + FROM live_streams ls + WHERE ls.category_id = favorites.ref_id + AND (LOWER(ls.name) LIKE ? OR LOWER(ls.stream_id) LIKE ?) + ) + ) + OR ( + mode = 'vod_category' + AND EXISTS ( + SELECT 1 + FROM vod_streams vs + WHERE vs.category_id = favorites.ref_id + AND (LOWER(vs.name) LIKE ? OR LOWER(vs.stream_id) LIKE ?) + ) + ) + OR ( + mode = 'series_category' + AND EXISTS ( + SELECT 1 + FROM series_items si + WHERE si.category_id = favorites.ref_id + AND (LOWER(si.name) LIKE ? OR LOWER(si.series_id) LIKE ?) + ) + ) """); String value = "%" + search + "%"; args.add(value); args.add(value); args.add(value); args.add(value); + args.add(value); + args.add(value); + args.add(value); + args.add(value); + args.add(value); + args.add(value); } try (Connection connection = openConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql.toString())) {