Optimize search

This commit is contained in:
2025-12-11 02:24:25 +01:00
parent b398ac869c
commit a7599069b8
4 changed files with 61 additions and 7 deletions

View File

@@ -3,5 +3,8 @@ package com.imgfloat.app.repository;
import com.imgfloat.app.model.Channel;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface ChannelRepository extends JpaRepository<Channel, String> {
List<Channel> findTop50ByBroadcasterContainingIgnoreCaseOrderByBroadcasterAsc(String broadcasterFragment);
}

View File

@@ -42,7 +42,6 @@ import java.util.Collection;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import java.util.Optional;
import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
@@ -94,13 +93,10 @@ public class ChannelDirectoryService {
public List<String> searchBroadcasters(String query) {
String normalizedQuery = normalize(query);
return channelRepository.findAll().stream()
String searchTerm = normalizedQuery == null || normalizedQuery.isBlank() ? "" : normalizedQuery;
return channelRepository.findTop50ByBroadcasterContainingIgnoreCaseOrderByBroadcasterAsc(searchTerm)
.stream()
.map(Channel::getBroadcaster)
.map(this::normalize)
.filter(Objects::nonNull)
.filter(name -> normalizedQuery == null || normalizedQuery.isBlank() || name.contains(normalizedQuery))
.sorted()
.limit(50)
.toList();
}