Skip to content

Commit 2d658d9

Browse files
authored
Support blank keyword (#38)
Fixes #37 ```release-note None ```
1 parent efe203d commit 2d658d9

File tree

1 file changed

+23
-11
lines changed

1 file changed

+23
-11
lines changed

src/main/java/run/halo/search/widget/SearchView.java

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
import org.springframework.web.reactive.function.server.*;
77
import reactor.core.publisher.Mono;
88
import run.halo.app.search.SearchOption;
9+
import run.halo.app.search.SearchResult;
910
import run.halo.app.search.SearchService;
1011

12+
import java.util.List;
1113
import java.util.Map;
1214

1315
@Component
@@ -27,19 +29,29 @@ RouterFunction<ServerResponse> searchView() {
2729
}
2830

2931
private Mono<ServerResponse> performSearch(ServerRequest serverRequest) {
30-
var keyword = serverRequest.queryParam("keyword").orElse("");
31-
var limit = serverRequest.queryParam("limit")
32+
int limit = serverRequest.queryParam("limit")
3233
.map(Integer::parseInt)
3334
.orElse(10);
34-
var includeTypes = serverRequest.queryParams().get("includeTypes");
35-
var option = new SearchOption();
36-
option.setKeyword(keyword);
37-
option.setLimit(limit);
38-
option.setFilterExposed(true);
39-
option.setFilterPublished(true);
40-
option.setFilterRecycled(false);
41-
option.setIncludeTypes(includeTypes);
42-
var result = searchService.search(option);
35+
var keyword = serverRequest.queryParam("keyword").orElse("");
36+
Mono<SearchResult> result;
37+
if (keyword.isBlank()) {
38+
var searchResult = new SearchResult();
39+
searchResult.setTotal(0L);
40+
searchResult.setLimit(limit);
41+
searchResult.setProcessingTimeMillis(0);
42+
searchResult.setHits(List.of());
43+
result = Mono.just(searchResult);
44+
} else {
45+
var includeTypes = serverRequest.queryParams().get("includeTypes");
46+
var option = new SearchOption();
47+
option.setKeyword(keyword);
48+
option.setLimit(limit);
49+
option.setFilterExposed(true);
50+
option.setFilterPublished(true);
51+
option.setFilterRecycled(false);
52+
option.setIncludeTypes(includeTypes);
53+
result = searchService.search(option);
54+
}
4355
return ServerResponse.ok().render("search", Map.of(
4456
"searchResult", result
4557
));

0 commit comments

Comments
 (0)