diff --git a/src/docs/asciidoc/Search-API.adoc b/src/docs/asciidoc/Search-API.adoc index 6d95e098..6a43bb4a 100644 --- a/src/docs/asciidoc/Search-API.adoc +++ b/src/docs/asciidoc/Search-API.adoc @@ -2,5 +2,8 @@ == Search API [[Search-검색]] -=== Search 검색 -operation::search-controller-test/검색[snippets='http-request,request-headers,request-parameters,http-response,response-fields'] \ No newline at end of file +=== Search 일기 검색 +operation::search-controller-test/일기_검색[snippets='http-request,request-headers,request-parameters,http-response,response-fields'] + +=== Search 회고 검색 +operation::search-controller-test/회고_검색[snippets='http-request,request-headers,request-parameters,http-response,response-fields'] \ No newline at end of file diff --git a/src/main/java/com/nanal/backend/domain/search/controller/SearchController.java b/src/main/java/com/nanal/backend/domain/search/controller/SearchController.java index d3449ad0..658e59e2 100644 --- a/src/main/java/com/nanal/backend/domain/search/controller/SearchController.java +++ b/src/main/java/com/nanal/backend/domain/search/controller/SearchController.java @@ -1,7 +1,8 @@ package com.nanal.backend.domain.search.controller; import com.nanal.backend.domain.search.dto.req.ReqSearchDto; -import com.nanal.backend.domain.search.dto.resp.RespSearchDto; +import com.nanal.backend.domain.search.dto.resp.RespSearchDiaryDto; +import com.nanal.backend.domain.search.dto.resp.RespSearchRetrospectDto; import com.nanal.backend.domain.search.service.SearchService; import com.nanal.backend.global.exception.customexception.BindingResultException; import com.nanal.backend.global.response.CommonResponse; @@ -17,18 +18,29 @@ @RequiredArgsConstructor @RestController public class SearchController { - private final SearchService searchService; - @GetMapping("/search") - public CommonResponse search(@AuthenticationPrincipal User user, + @GetMapping("/search/diary") + public CommonResponse searchDiary(@AuthenticationPrincipal User user, + @Valid ReqSearchDto reqSearchDto, + BindingResult bindingResult) { + + if(bindingResult.hasErrors()) throw new BindingResultException(bindingResult.getFieldErrors()); + + + RespSearchDiaryDto respSearchDiaryDto = searchService.searchDiary(user.getSocialId(), reqSearchDto); + return new CommonResponse<>(respSearchDiaryDto); + } + + @GetMapping("/search/retrospect") + public CommonResponse searchRetrospect(@AuthenticationPrincipal User user, @Valid ReqSearchDto reqSearchDto, BindingResult bindingResult) { if(bindingResult.hasErrors()) throw new BindingResultException(bindingResult.getFieldErrors()); - RespSearchDto respSearchDto = searchService.search(user.getSocialId() ,reqSearchDto); - return new CommonResponse<>(respSearchDto); + RespSearchRetrospectDto respSearchRetrospectDto = searchService.searchRetrospect(user.getSocialId(), reqSearchDto); + return new CommonResponse<>(respSearchRetrospectDto); } } diff --git a/src/main/java/com/nanal/backend/domain/search/dto/DiaryInfo.java b/src/main/java/com/nanal/backend/domain/search/dto/DiaryInfo.java index 859a22cb..2cda91da 100644 --- a/src/main/java/com/nanal/backend/domain/search/dto/DiaryInfo.java +++ b/src/main/java/com/nanal/backend/domain/search/dto/DiaryInfo.java @@ -17,7 +17,6 @@ @NoArgsConstructor @Data public class DiaryInfo { - private Boolean existMore = false; private Integer nextDiaryCount; private List diaryDtoList; diff --git a/src/main/java/com/nanal/backend/domain/search/dto/RetrospectInfo.java b/src/main/java/com/nanal/backend/domain/search/dto/RetrospectInfo.java index 8d06d54a..fb8cd3db 100644 --- a/src/main/java/com/nanal/backend/domain/search/dto/RetrospectInfo.java +++ b/src/main/java/com/nanal/backend/domain/search/dto/RetrospectInfo.java @@ -19,7 +19,6 @@ @NoArgsConstructor @Data public class RetrospectInfo { - private Boolean existMore = false; private Integer nextRetrospectCount; private List retrospectDtoList; @@ -33,7 +32,6 @@ public RetrospectInfo(List retrospectList, Integer nextRetrospectCou .collect(Collectors.toList()); } - @Builder @AllArgsConstructor @NoArgsConstructor diff --git a/src/main/java/com/nanal/backend/domain/search/dto/resp/RespSearchDiaryDto.java b/src/main/java/com/nanal/backend/domain/search/dto/resp/RespSearchDiaryDto.java new file mode 100644 index 00000000..86714e29 --- /dev/null +++ b/src/main/java/com/nanal/backend/domain/search/dto/resp/RespSearchDiaryDto.java @@ -0,0 +1,24 @@ +package com.nanal.backend.domain.search.dto.resp; + +import com.nanal.backend.domain.diary.entity.Diary; +import com.nanal.backend.domain.search.dto.DiaryInfo; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Data +public class RespSearchDiaryDto { + private DiaryInfo diaryInfo; + + public RespSearchDiaryDto(String searchWord, + List diaryList, + Integer nextDiaryCount) { + this.diaryInfo = new DiaryInfo(diaryList, nextDiaryCount, searchWord); + } +} diff --git a/src/main/java/com/nanal/backend/domain/search/dto/resp/RespSearchDto.java b/src/main/java/com/nanal/backend/domain/search/dto/resp/RespSearchRetrospectDto.java similarity index 50% rename from src/main/java/com/nanal/backend/domain/search/dto/resp/RespSearchDto.java rename to src/main/java/com/nanal/backend/domain/search/dto/resp/RespSearchRetrospectDto.java index 3cbe732d..2ad540bf 100644 --- a/src/main/java/com/nanal/backend/domain/search/dto/resp/RespSearchDto.java +++ b/src/main/java/com/nanal/backend/domain/search/dto/resp/RespSearchRetrospectDto.java @@ -1,8 +1,6 @@ package com.nanal.backend.domain.search.dto.resp; -import com.nanal.backend.domain.diary.entity.Diary; import com.nanal.backend.domain.retrospect.entity.Retrospect; -import com.nanal.backend.domain.search.dto.DiaryInfo; import com.nanal.backend.domain.search.dto.RetrospectInfo; import lombok.AllArgsConstructor; import lombok.Builder; @@ -15,18 +13,12 @@ @AllArgsConstructor @NoArgsConstructor @Data -public class RespSearchDto { - - private DiaryInfo diaryInfo; - +public class RespSearchRetrospectDto { private RetrospectInfo retrospectInfo; - public RespSearchDto(String searchWord, - List diaryList, - List retrospectList, - Integer nextDiaryCount, - Integer nextRetrospectCount) { - this.diaryInfo = new DiaryInfo(diaryList, nextDiaryCount, searchWord); + public RespSearchRetrospectDto(String searchWord, + List retrospectList, + Integer nextRetrospectCount) { this.retrospectInfo = new RetrospectInfo(retrospectList, nextRetrospectCount, searchWord); } } diff --git a/src/main/java/com/nanal/backend/domain/search/service/SearchService.java b/src/main/java/com/nanal/backend/domain/search/service/SearchService.java index 8133974d..7ba519d2 100644 --- a/src/main/java/com/nanal/backend/domain/search/service/SearchService.java +++ b/src/main/java/com/nanal/backend/domain/search/service/SearchService.java @@ -5,7 +5,8 @@ import com.nanal.backend.domain.diary.entity.Diary; import com.nanal.backend.domain.retrospect.entity.Retrospect; import com.nanal.backend.domain.search.dto.req.ReqSearchDto; -import com.nanal.backend.domain.search.dto.resp.RespSearchDto; +import com.nanal.backend.domain.search.dto.resp.RespSearchDiaryDto; +import com.nanal.backend.domain.search.dto.resp.RespSearchRetrospectDto; import com.nanal.backend.domain.search.repository.SearchDiaryRepository; import com.nanal.backend.domain.search.repository.SearchRetrospectRepository; import io.micrometer.core.annotation.Timed; @@ -20,22 +21,27 @@ @RequiredArgsConstructor @Service public class SearchService { - private final MemberRepository memberRepository; private final SearchDiaryRepository searchDiaryRepository; private final SearchRetrospectRepository searchRetrospectRepository; - public RespSearchDto search(String socialId, ReqSearchDto reqSearchDto) { + public RespSearchDiaryDto searchDiary(String socialId, ReqSearchDto reqSearchDto) { Member member = memberRepository.findMember(socialId); // 일기 검색 List diaryList = searchDiaryRepository.searchDiary(reqSearchDto, member.getMemberId()); Integer nextDiaryCount = searchDiaryRepository.countLeftDiary(reqSearchDto, member.getMemberId()); + return new RespSearchDiaryDto(reqSearchDto.getSearchWord(), diaryList, nextDiaryCount); + } + + public RespSearchRetrospectDto searchRetrospect(String socialId, ReqSearchDto reqSearchDto) { + Member member = memberRepository.findMember(socialId); + // 회고 검색 List retrospectList = searchRetrospectRepository.searchRetrospect(reqSearchDto, member.getMemberId()); Integer nextRetrospectCount = searchRetrospectRepository.countLeftRetrospect(reqSearchDto, member.getMemberId()); - return new RespSearchDto(reqSearchDto.getSearchWord(), diaryList, retrospectList, nextDiaryCount, nextRetrospectCount); + return new RespSearchRetrospectDto(reqSearchDto.getSearchWord(), retrospectList, nextRetrospectCount); } } diff --git a/src/main/resources/static/docs/Alarm-API.html b/src/main/resources/static/docs/Alarm-API.html index fb003264..981656ca 100644 --- a/src/main/resources/static/docs/Alarm-API.html +++ b/src/main/resources/static/docs/Alarm-API.html @@ -648,7 +648,7 @@

Response fields

diff --git a/src/main/resources/static/docs/Auth-API.html b/src/main/resources/static/docs/Auth-API.html index 60205ef9..65f07196 100644 --- a/src/main/resources/static/docs/Auth-API.html +++ b/src/main/resources/static/docs/Auth-API.html @@ -1029,7 +1029,7 @@

Response fields

diff --git a/src/main/resources/static/docs/Diary-API.html b/src/main/resources/static/docs/Diary-API.html index bf2dc3cf..c69b01cd 100644 --- a/src/main/resources/static/docs/Diary-API.html +++ b/src/main/resources/static/docs/Diary-API.html @@ -1305,7 +1305,7 @@

Response fields

diff --git a/src/main/resources/static/docs/MyPage-API.html b/src/main/resources/static/docs/MyPage-API.html index 819b9865..96d0118a 100644 --- a/src/main/resources/static/docs/MyPage-API.html +++ b/src/main/resources/static/docs/MyPage-API.html @@ -1275,7 +1275,7 @@

Response fields

diff --git a/src/main/resources/static/docs/OnBoarding-API.html b/src/main/resources/static/docs/OnBoarding-API.html index 37eea515..85e2cc6d 100644 --- a/src/main/resources/static/docs/OnBoarding-API.html +++ b/src/main/resources/static/docs/OnBoarding-API.html @@ -542,7 +542,7 @@

Response fields diff --git a/src/main/resources/static/docs/Overview.html b/src/main/resources/static/docs/Overview.html index 4d666ac2..0cc994e8 100644 --- a/src/main/resources/static/docs/Overview.html +++ b/src/main/resources/static/docs/Overview.html @@ -659,7 +659,7 @@

Retrospect Status Codes

diff --git a/src/main/resources/static/docs/Retrospect-API.html b/src/main/resources/static/docs/Retrospect-API.html index aa02fec6..ca179ced 100644 --- a/src/main/resources/static/docs/Retrospect-API.html +++ b/src/main/resources/static/docs/Retrospect-API.html @@ -2017,7 +2017,7 @@

Response fields

diff --git a/src/main/resources/static/docs/Search-API.html b/src/main/resources/static/docs/Search-API.html index 56184ea9..54e56f69 100644 --- a/src/main/resources/static/docs/Search-API.html +++ b/src/main/resources/static/docs/Search-API.html @@ -444,12 +444,12 @@

Search API

-

Search 검색

+

Search 일기 검색

HTTP request

-
GET /search?searchWord=%EA%B2%80%EC%83%89%EB%8B%A8%EC%96%B4&startDate=2022-11-01T00%3A00&endDate=2022-11-30T00%3A00&offset=0&limit=10 HTTP/1.1
+
GET /search/diary?searchWord=%EA%B2%80%EC%83%89%EB%8B%A8%EC%96%B4&startDate=2022-11-01T00%3A00&endDate=2022-11-30T00%3A00&offset=0&limit=10 HTTP/1.1
 Content-Type: application/x-www-form-urlencoded;charset=UTF-8
 Token: ACCESS_TOKEN
 Host: localhost:8080
@@ -520,7 +520,7 @@

HTTP response

HTTP/1.1 200 OK
 Content-Type: application/json;charset=UTF-8
-Content-Length: 791
+Content-Length: 442
 
 {
   "isSuccess" : true,
@@ -537,17 +537,6 @@ 

HTTP response

"content" : "일기 내용", "keywords" : [ "키워드1", "키워드2", "키워드3" ] } ] - }, - "retrospectInfo" : { - "existMore" : false, - "nextRetrospectCount" : 0, - "retrospectDtoList" : [ { - "retrospectId" : 10, - "type" : "RETROSPECT", - "writeDate" : "2022-11-10T00:00:00", - "question" : "이번주 나의 모습은 어땠나요?", - "answer" : "좋았어요" - } ] } } }
@@ -620,6 +609,141 @@

Response fields

Array

키워드

+ + +
+
+
+

Search 회고 검색

+
+

HTTP request

+
+
+
GET /search/retrospect?searchWord=%EA%B2%80%EC%83%89%EB%8B%A8%EC%96%B4&startDate=2022-11-01T00%3A00&endDate=2022-11-30T00%3A00&offset=0&limit=10 HTTP/1.1
+Content-Type: application/x-www-form-urlencoded;charset=UTF-8
+Token: ACCESS_TOKEN
+Host: localhost:8080
+
+
+
+
+

Request headers

+ ++++ + + + + + + + + + + + + +
NameDescription

Token

접근 토큰

+
+
+

Request parameters

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterDescription

searchWord

검색할 단어

startDate

처음 날짜

endDate

마지막 날짜

offset

몇 번째부터 가져올지(zero based)

limit

몇 개씩 가져올지

+
+
+

HTTP response

+
+
+
HTTP/1.1 200 OK
+Content-Type: application/json;charset=UTF-8
+Content-Length: 464
+
+{
+  "isSuccess" : true,
+  "code" : 200,
+  "message" : "요청에 성공하였습니다.",
+  "result" : {
+    "retrospectInfo" : {
+      "existMore" : false,
+      "nextRetrospectCount" : 0,
+      "retrospectDtoList" : [ {
+        "retrospectId" : 10,
+        "type" : "RETROSPECT",
+        "writeDate" : "2022-11-10T00:00:00",
+        "question" : "이번주 나의 모습은 어땠나요?",
+        "answer" : "좋았어요"
+      } ]
+    }
+  }
+}
+
+
+
+
+

Response fields

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + @@ -665,7 +789,7 @@

Response fields

diff --git a/src/main/resources/static/docs/Sponsor-API.html b/src/main/resources/static/docs/Sponsor-API.html index 9c8e4d57..19e2673c 100644 --- a/src/main/resources/static/docs/Sponsor-API.html +++ b/src/main/resources/static/docs/Sponsor-API.html @@ -563,7 +563,7 @@ diff --git a/src/main/resources/static/docs/api.html b/src/main/resources/static/docs/api.html index 4e135fd5..eb961b13 100644 --- a/src/main/resources/static/docs/api.html +++ b/src/main/resources/static/docs/api.html @@ -511,7 +511,8 @@

Nanal API Doc

  • Search API
  • Sponsor API @@ -4894,12 +4895,12 @@

    Search API

    -

    Search 검색

    +

    Search 일기 검색

    HTTP request

    -
    GET /search?searchWord=%EA%B2%80%EC%83%89%EB%8B%A8%EC%96%B4&startDate=2022-11-01T00%3A00&endDate=2022-11-30T00%3A00&offset=0&limit=10 HTTP/1.1
    +
    GET /search/diary?searchWord=%EA%B2%80%EC%83%89%EB%8B%A8%EC%96%B4&startDate=2022-11-01T00%3A00&endDate=2022-11-30T00%3A00&offset=0&limit=10 HTTP/1.1
     Content-Type: application/x-www-form-urlencoded;charset=UTF-8
     Token: ACCESS_TOKEN
     Host: localhost:8080
    @@ -4970,7 +4971,7 @@

    HTTP/1.1 200 OK
     Content-Type: application/json;charset=UTF-8
    -Content-Length: 791
    +Content-Length: 442
     
     {
       "isSuccess" : true,
    @@ -4987,17 +4988,6 @@ 

    @@ -5070,6 +5060,141 @@

    Array

  • + +
    PathTypeDescription

    isSuccess

    Boolean

    성공 여부

    code

    Number

    상태 코드

    message

    String

    결과 메시지

    result.retrospectInfo.existMore

    Boolean

    키워드

    +
    +
    +
    +

    Search 회고 검색

    +
    +

    HTTP request

    +
    +
    +
    GET /search/retrospect?searchWord=%EA%B2%80%EC%83%89%EB%8B%A8%EC%96%B4&startDate=2022-11-01T00%3A00&endDate=2022-11-30T00%3A00&offset=0&limit=10 HTTP/1.1
    +Content-Type: application/x-www-form-urlencoded;charset=UTF-8
    +Token: ACCESS_TOKEN
    +Host: localhost:8080
    +
    +
    +
    +
    +

    Request headers

    + ++++ + + + + + + + + + + + + +
    NameDescription

    Token

    접근 토큰

    +
    +
    +

    Request parameters

    + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ParameterDescription

    searchWord

    검색할 단어

    startDate

    처음 날짜

    endDate

    마지막 날짜

    offset

    몇 번째부터 가져올지(zero based)

    limit

    몇 개씩 가져올지

    +
    +
    +

    HTTP response

    +
    +
    +
    HTTP/1.1 200 OK
    +Content-Type: application/json;charset=UTF-8
    +Content-Length: 464
    +
    +{
    +  "isSuccess" : true,
    +  "code" : 200,
    +  "message" : "요청에 성공하였습니다.",
    +  "result" : {
    +    "retrospectInfo" : {
    +      "existMore" : false,
    +      "nextRetrospectCount" : 0,
    +      "retrospectDtoList" : [ {
    +        "retrospectId" : 10,
    +        "type" : "RETROSPECT",
    +        "writeDate" : "2022-11-10T00:00:00",
    +        "question" : "이번주 나의 모습은 어땠나요?",
    +        "answer" : "좋았어요"
    +      } ]
    +    }
    +  }
    +}
    +
    +
    +
    +
    +

    Response fields

    + +++++ + + + + + + + + + + + + + + + + + + + + + + + @@ -5234,7 +5359,7 @@
    PathTypeDescription

    isSuccess

    Boolean

    성공 여부

    code

    Number

    상태 코드

    message

    String

    결과 메시지

    result.retrospectInfo.existMore

    Boolean