66import org .springframework .web .reactive .function .server .*;
77import reactor .core .publisher .Mono ;
88import run .halo .app .search .SearchOption ;
9+ import run .halo .app .search .SearchResult ;
910import run .halo .app .search .SearchService ;
1011
12+ import java .util .List ;
1113import 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