Skip to content

Commit

Permalink
Merge pull request #52 from UniBond-jijijin/fix/51-search-disease
Browse files Browse the repository at this point in the history
[fix/51-search-disease] 질병 검색 API 수정
  • Loading branch information
5jisoo authored Dec 30, 2023
2 parents 8cc3c61 + 9225651 commit 87cc86d
Show file tree
Hide file tree
Showing 15 changed files with 1,455 additions and 50 deletions.
4 changes: 1 addition & 3 deletions .github/workflows/build-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@ name: Build and Deploy Spring Boot to AWS EC2

on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
branches: ["develop"]

env:
PROJECT_NAME: unibond
Expand Down
629 changes: 629 additions & 0 deletions unibond/BOOT-INF/classes/static/docs/disease.html

Large diffs are not rendered by default.

24 changes: 23 additions & 1 deletion unibond/BOOT-INF/classes/static/docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -451,6 +451,8 @@ <h1>UniBond API Document</h1>
<li><a href="#_http_status_code">Http Status Code</a></li>
<li><a href="#_api_list">API List</a>
<ul class="sectlevel2">
<li><a href="#_member">Member</a></li>
<li><a href="#_disease">Disease</a></li>
<li><a href="#_community">Community</a></li>
</ul>
</li>
Expand Down Expand Up @@ -502,6 +504,26 @@ <h2 id="_http_status_code"><a class="link" href="#_http_status_code">Http Status
<h2 id="_api_list"><a class="link" href="#_api_list">API List</a></h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_member"><a class="link" href="#_member">Member</a></h3>
<div class="ulist">
<ul>
<li>
<p><a href="member.html">Member API</a></p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_disease"><a class="link" href="#_disease">Disease</a></h3>
<div class="ulist">
<ul>
<li>
<p><a href="disease.html">Disease API</a></p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_community"><a class="link" href="#_community">Community</a></h3>
<div class="ulist">
<ul>
Expand All @@ -517,7 +539,7 @@ <h3 id="_community"><a class="link" href="#_community">Community</a></h3>
<div id="footer">
<div id="footer-text">
Version 0.0.1-SNAPSHOT<br>
Last updated 2023-12-26 02:42:27 +0900
Last updated 2023-12-31 03:38:04 +0900
</div>
</div>
</body>
Expand Down
18 changes: 9 additions & 9 deletions unibond/BOOT-INF/classes/static/docs/member.html
Original file line number Diff line number Diff line change
Expand Up @@ -547,32 +547,32 @@ <h3 id="_request"><a class="link" href="#_request">Request</a></h3>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>nickname</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>class java.lang.String</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>String</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[request.nickname] 새로운 닉네임 : 중복 체크에 유의해주세요! (닉네임 중복 체크 API와 함께 사용을 권장함.)</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>gender</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>class com.unibond.unibond.member.domain.Gender</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>String</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[request.gender] 새로운 성별 : <code>MALE</code>, <code>FEMALE</code>, <code>NULL</code> 만 가능함.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>diseaseId</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>class java.lang.Long</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>Number</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[request.diseaseId] 새로운 질병 : 질병 아이디는 질병 검색 결과에서 아이디를 가져옵니다</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>diagnosisTiming</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>class java.time.LocalDate</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[request.diagnosisTiming] 새로운 질병 시기</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>String</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[request.diagnosisTiming] 새로운 질병 시기 ex)<code>2002-06-27</code></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>bio</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>class java.lang.String</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>String</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[request.bio] 새로운 한 줄 소개</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>interestList</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>interface java.util.List</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>Array</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[request.interestList] 새로운 관심사 리스트</p></td>
</tr>
</tbody>
Expand Down Expand Up @@ -615,7 +615,7 @@ <h3 id="_response"><a class="link" href="#_response">Response</a></h3>
"code" : 1000,
"message" : "요청에 성공하였습니다.",
"result" : {
"profileImage" : "https://unibond-img-bucket.s3.ap-northeast-2.amazonaws.com/user/0f50f1f0-60f7-43e3-8b28-104d6b4b16b8test_profile_img.jpg",
"profileImage" : "https://unibond-img-bucket.s3.ap-northeast-2.amazonaws.com/user/c650763a-4f5d-4242-8cb1-5b6d1f130526test_profile_img.jpg",
"nickname" : "5jizzi",
"gender" : "MALE",
"diseaseName" : "1번 염색체 장완 21.3 부분의 미세결손 증후군",
Expand Down Expand Up @@ -704,7 +704,7 @@ <h3 id="_response"><a class="link" href="#_response">Response</a></h3>
<div id="footer">
<div id="footer-text">
Version 0.0.1-SNAPSHOT<br>
Last updated 2023-12-31 02:26:22 +0900
Last updated 2023-12-31 02:43:53 +0900
</div>
</div>
</body>
Expand Down
26 changes: 26 additions & 0 deletions unibond/src/docs/asciidoc/disease.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
= Member API
Lucy Oh;
:doctype: book
:icons: font
:source-highlighter: highlishtjs
:toc: left
:toclevels: 4
:sectlinks:

ifndef::snippets[]
:snippets: ./build/generated-snippets
endif::[]

== Search Disease By Name

한글 또는 영어 이름을 통해 질병 검색하기

=== Request
include::{snippets}/search-disease/http-request.adoc[]
include::{snippets}/search-disease/query-parameters.adoc[]


=== Response

include::{snippets}/search-disease/http-response.adoc[]
include::{snippets}/search-disease/response-fields.adoc[]
4 changes: 4 additions & 0 deletions unibond/src/docs/asciidoc/index.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ Lucy Oh;

* link:member.html[Member API]

=== Disease

* link:disease.html[Disease API]

=== Community

* link:experience-community.html[Experience Recording Community API]
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,25 @@
import com.unibond.unibond.disease.dto.SearchDiseaseResDto;
import com.unibond.unibond.disease.service.DiseaseService;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/v1/disease")
@RequestMapping("/api/v1/diseases")
public class DiseaseController {
private final DiseaseService diseaseService;

// TODO: 페이징 추가
@GetMapping("/search")
public BaseResponse<SearchDiseaseResDto> searchDisease(@RequestParam("lan") String language,
@RequestParam("query") String searchWord) {
@RequestParam("query") String searchWord,
@PageableDefault(size = 5) Pageable pageable) {
try {
return new BaseResponse<>(diseaseService.searchDisease(language, searchWord));
return new BaseResponse<>(diseaseService.searchDisease(language, searchWord, pageable));
} catch (BaseException e) {
return new BaseResponse<>(e.getStatus());
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
package com.unibond.unibond.disease.dto;

import com.unibond.unibond.common.PageInfo;
import com.unibond.unibond.disease.domain.Disease;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.*;
import org.springframework.data.domain.Page;

import java.util.ArrayList;
import java.util.List;
Expand All @@ -13,10 +12,12 @@
@NoArgsConstructor
@AllArgsConstructor
public class SearchDiseaseResDto {
private PageInfo pageInfo;
private List<SearchedDisease> diseaseDataList = new ArrayList<>();

public void appendDiseaseDataToList(List<Disease> diseaseList) {
for (Disease disease : diseaseList) {
public SearchDiseaseResDto(Page<Disease> diseasePage) {
this.pageInfo = new PageInfo(diseasePage);
for (Disease disease : diseasePage.stream().toList()) {
SearchedDisease searchedDisease = SearchedDisease.builder()
.diseaseNameKor(disease.getDiseaseNameKor())
.diseaseNameEng(disease.getDiseaseNameEng())
Expand All @@ -25,6 +26,8 @@ public void appendDiseaseDataToList(List<Disease> diseaseList) {
}
}

@Getter
@NoArgsConstructor
public static class SearchedDisease {
private String diseaseNameKor;
private String diseaseNameEng;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package com.unibond.unibond.disease.repository;

import com.unibond.unibond.disease.domain.Disease;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface DiseaseRepository extends JpaRepository<Disease, Long> {
List<Disease> findFirst5ByDiseaseNameKorContaining(String query);
List<Disease> findFirst5ByDiseaseNameEngContaining(String query);
Page<Disease> findFirst5ByDiseaseNameKorContains(String query, Pageable pageable);
Page<Disease> findFirst5ByDiseaseNameEngContains(String query, Pageable pageable);
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import com.unibond.unibond.disease.dto.SearchDiseaseResDto;
import com.unibond.unibond.disease.repository.DiseaseRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;

import java.util.List;
Expand All @@ -17,23 +19,20 @@
public class DiseaseService {
private final DiseaseRepository diseaseRepository;

public SearchDiseaseResDto searchDisease(String language, String searchWord) throws BaseException {
public SearchDiseaseResDto searchDisease(String language, String searchWord, Pageable pageable) throws BaseException {
try {

List<Disease> searchedDiseaseList;
Page<Disease> searchedDiseaseList;

if (language.equals("kor")) {
searchedDiseaseList = diseaseRepository.findFirst5ByDiseaseNameKorContaining(searchWord);
searchedDiseaseList = diseaseRepository.findFirst5ByDiseaseNameKorContains(searchWord, pageable);
} else if (language.equals("eng")) {
searchedDiseaseList = diseaseRepository.findFirst5ByDiseaseNameEngContaining(searchWord);
searchedDiseaseList = diseaseRepository.findFirst5ByDiseaseNameEngContains(searchWord, pageable);
} else {
throw new BaseException(NULL_SEARCH_LAN);
}

SearchDiseaseResDto searchDiseaseResDto = new SearchDiseaseResDto();
searchDiseaseResDto.appendDiseaseDataToList(searchedDiseaseList);

return searchDiseaseResDto;
return new SearchDiseaseResDto(searchedDiseaseList);
} catch (BaseException e) {
throw e;
} catch (Exception e) {
Expand Down
Loading

0 comments on commit 87cc86d

Please sign in to comment.