mirror of
https://github.com/imgfloat/server.git
synced 2026-02-05 11:49:25 +00:00
Optimize search
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user