33import io .swagger .v3 .oas .annotations .Operation ;
44import io .swagger .v3 .oas .annotations .tags .Tag ;
55import lombok .RequiredArgsConstructor ;
6- import org .com .stocknote .domain .portfolio .portfolio .dto .response .PortfolioResponse ;
6+ import org .com .stocknote .domain .post .dto .PostResponseDto ;
7+ import org .com .stocknote .domain .post .dto .PostSearchConditionDto ;
78import org .com .stocknote .domain .searchDoc .document .PortfolioDoc ;
89import org .com .stocknote .domain .searchDoc .document .PortfolioStockDoc ;
10+ import org .com .stocknote .domain .searchDoc .document .PostDoc ;
911import org .com .stocknote .domain .searchDoc .document .StockDoc ;
1012import org .com .stocknote .domain .searchDoc .dto .request .SearchKeyword ;
1113import org .com .stocknote .domain .searchDoc .dto .response .SearchPortfolioResponse ;
1214import org .com .stocknote .domain .searchDoc .dto .response .SearchedStockResponse ;
13- import org .com .stocknote .domain .searchDoc .service .StockDocService ;
15+ import org .com .stocknote .domain .searchDoc .service .SearchDocService ;
1416import org .com .stocknote .global .globalDto .GlobalResponse ;
1517import org .com .stocknote .oauth .entity .PrincipalDetails ;
18+ import org .springframework .data .domain .Page ;
19+ import org .springframework .data .domain .Pageable ;
20+ import org .springframework .data .domain .Sort ;
21+ import org .springframework .data .web .PageableDefault ;
1622import org .springframework .security .core .annotation .AuthenticationPrincipal ;
1723import org .springframework .web .bind .annotation .*;
1824
2430@ RequestMapping ("/api/v1/searchDocs" )
2531@ Tag (name = "검색 API" , description = "검색(Search)" )
2632public class SearchDocController {
27- private final StockDocService stockDocService ;
33+ private final SearchDocService searchDocService ;
2834
2935 @ PostMapping ("/stock" )
3036 @ Operation (summary = "종목 조회" )
3137 public GlobalResponse <List <SearchedStockResponse >> searchStocks (
3238 @ RequestBody SearchKeyword searchKeyword
3339 ) {
34- List <StockDoc > stockList = stockDocService .searchStocks (searchKeyword .getKeyword ());
40+ List <StockDoc > stockList = searchDocService .searchStocks (searchKeyword .getKeyword ());
3541 List <SearchedStockResponse > response =
3642 stockList .stream ().map (SearchedStockResponse ::of ).collect (Collectors .toList ());
3743 return GlobalResponse .success (response );
@@ -43,11 +49,23 @@ public GlobalResponse<SearchPortfolioResponse> getMyPortfolioList(
4349 @ AuthenticationPrincipal PrincipalDetails principalDetails
4450 ) {
4551 String email = principalDetails .getUsername ();
46- PortfolioDoc portfolioDoc = stockDocService .getMyPortfolioList (email );
47- List <PortfolioStockDoc > portfolioStockDocList = stockDocService .getMyPortfolioStockList (email );
52+ PortfolioDoc portfolioDoc = searchDocService .getMyPortfolioList (email );
53+ List <PortfolioStockDoc > portfolioStockDocList = searchDocService .getMyPortfolioStockList (email );
4854 SearchPortfolioResponse
4955 response = SearchPortfolioResponse .from (portfolioDoc , portfolioStockDocList );
5056 return GlobalResponse .success (response );
5157
5258 }
59+
60+ @ GetMapping ("/post/search" )
61+ @ Operation (summary = "게시글 검색" )
62+ public GlobalResponse <Page <PostResponseDto >> searchPosts (
63+ @ ModelAttribute PostSearchConditionDto condition ,
64+ @ PageableDefault (sort = "createdAt" , direction = Sort .Direction .DESC ) Pageable pageable
65+ ) {
66+ Page <PostDoc > postDocs = searchDocService .searchPosts (condition , pageable );
67+ Page <PostResponseDto > response = postDocs .map (PostResponseDto ::fromPost );
68+ return GlobalResponse .success (response );
69+ }
70+
5371}
0 commit comments