From 246ac8029a4ae1af8c674a6b4f63211ec41f7941 Mon Sep 17 00:00:00 2001 From: gahyuun Date: Fri, 17 Jan 2025 19:57:09 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20search=20spot=20response=20dto=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84=20(#26)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spot/api/response/SearchSpotResponse.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/main/java/com/acon/server/spot/api/response/SearchSpotResponse.java diff --git a/src/main/java/com/acon/server/spot/api/response/SearchSpotResponse.java b/src/main/java/com/acon/server/spot/api/response/SearchSpotResponse.java new file mode 100644 index 0000000..712861f --- /dev/null +++ b/src/main/java/com/acon/server/spot/api/response/SearchSpotResponse.java @@ -0,0 +1,14 @@ +package com.acon.server.spot.api.response; + +import com.acon.server.spot.domain.enums.SpotType; +import lombok.Builder; + +@Builder +public record SearchSpotResponse( + Long spotId, + String name, + String address, + SpotType spotType +) { + +} From a4ee9876f67eb5c1f7614657ab56e6e7b54fd2d4 Mon Sep 17 00:00:00 2001 From: gahyuun Date: Fri, 17 Jan 2025 19:57:26 +0900 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20search=20spot=20list=20response=20d?= =?UTF-8?q?to=20=EA=B5=AC=ED=98=84=20(#26)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/spot/api/response/SearchSpotListResponse.java | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 src/main/java/com/acon/server/spot/api/response/SearchSpotListResponse.java diff --git a/src/main/java/com/acon/server/spot/api/response/SearchSpotListResponse.java b/src/main/java/com/acon/server/spot/api/response/SearchSpotListResponse.java new file mode 100644 index 0000000..7e3db8b --- /dev/null +++ b/src/main/java/com/acon/server/spot/api/response/SearchSpotListResponse.java @@ -0,0 +1,9 @@ +package com.acon.server.spot.api.response; + +import java.util.List; + +public record SearchSpotListResponse( + List spotList +) { + +} From 95f13a0f60ada541c1992a74d7b6b38ec26a77e0 Mon Sep 17 00:00:00 2001 From: gahyuun Date: Fri, 17 Jan 2025 19:57:52 +0900 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20=EC=9E=A5=EC=86=8C=20=EA=B2=80?= =?UTF-8?q?=EC=83=89=20API=20=EA=B5=AC=ED=98=84=20(#26)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spot/api/controller/SpotController.java | 11 +++++++++++ .../spot/application/service/SpotService.java | 18 ++++++++++++++++++ .../spot/infra/repository/SpotRepository.java | 2 ++ 3 files changed, 31 insertions(+) diff --git a/src/main/java/com/acon/server/spot/api/controller/SpotController.java b/src/main/java/com/acon/server/spot/api/controller/SpotController.java index 44a847b..0c6ae3f 100644 --- a/src/main/java/com/acon/server/spot/api/controller/SpotController.java +++ b/src/main/java/com/acon/server/spot/api/controller/SpotController.java @@ -1,6 +1,7 @@ package com.acon.server.spot.api.controller; import com.acon.server.spot.api.response.MenuListResponse; +import com.acon.server.spot.api.response.SearchSpotListResponse; import com.acon.server.spot.application.service.SpotService; import jakarta.validation.constraints.Positive; import lombok.RequiredArgsConstructor; @@ -9,6 +10,7 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @@ -27,4 +29,13 @@ public ResponseEntity getMenus( spotService.fetchMenus(spotId) ); } + + @GetMapping("/spots/search") + public ResponseEntity searchSpot( + @RequestParam(value = "keyword", required = false) final String keyword + ) { + return ResponseEntity.ok( + spotService.searchSpot(keyword) + ); + } } diff --git a/src/main/java/com/acon/server/spot/application/service/SpotService.java b/src/main/java/com/acon/server/spot/application/service/SpotService.java index 597efe3..39862e5 100644 --- a/src/main/java/com/acon/server/spot/application/service/SpotService.java +++ b/src/main/java/com/acon/server/spot/application/service/SpotService.java @@ -4,7 +4,10 @@ import com.acon.server.global.exception.ErrorType; import com.acon.server.spot.api.response.MenuListResponse; import com.acon.server.spot.api.response.MenuResponse; +import com.acon.server.spot.api.response.SearchSpotListResponse; +import com.acon.server.spot.api.response.SearchSpotResponse; import com.acon.server.spot.infra.entity.MenuEntity; +import com.acon.server.spot.infra.entity.SpotEntity; import com.acon.server.spot.infra.repository.MenuRepository; import com.acon.server.spot.infra.repository.SpotRepository; import java.util.List; @@ -34,4 +37,19 @@ public MenuListResponse fetchMenus(Long spotId) { return new MenuListResponse(menuList); } + + public SearchSpotListResponse searchSpot(final String keyword) { + List spotEntityList = spotRepository.findTop10ByNameContainsIgnoreCase(keyword); + List spotList = spotEntityList.stream() + .map(spotEntity -> SearchSpotResponse.builder() + .spotId(spotEntity.getId()) + .name(spotEntity.getName()) + .address(spotEntity.getAddress()) + .spotType(spotEntity.getSpotType()) + .build()) + .toList(); + + return new SearchSpotListResponse(spotList); + + } } diff --git a/src/main/java/com/acon/server/spot/infra/repository/SpotRepository.java b/src/main/java/com/acon/server/spot/infra/repository/SpotRepository.java index 5bcc573..1fc9935 100644 --- a/src/main/java/com/acon/server/spot/infra/repository/SpotRepository.java +++ b/src/main/java/com/acon/server/spot/infra/repository/SpotRepository.java @@ -1,8 +1,10 @@ package com.acon.server.spot.infra.repository; import com.acon.server.spot.infra.entity.SpotEntity; +import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; public interface SpotRepository extends JpaRepository { + List findTop10ByNameContainsIgnoreCase(String keyword); }