From c46d83e3eb7866d8c5084d306409350a8bfcbf55 Mon Sep 17 00:00:00 2001 From: Hanjaemo <110653660+Hanjaemo@users.noreply.github.com> Date: Wed, 24 Apr 2024 13:33:38 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B3=B5=EA=B3=B5=EB=8D=B0=EC=9D=B4=ED=84=B0?= =?UTF-8?q?=20API=20=EA=B4=80=EB=A0=A8=20=EC=A0=95=EB=B3=B4=20=EC=A0=80?= =?UTF-8?q?=EC=9E=A5=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84=20(#52)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: 불필요한 코드 제거 * feat: 공공데이터 API 정보 저장 기능 구현 --- .../publicdata/PublicDataApiController.java | 6 ++++ .../module/publicdata/PublicDataApiInfo.java | 30 +++++++++++++++++++ .../PublicDataApiInfoRepository.java | 6 ++++ .../module/publicdata/PublicDataService.java | 7 +++++ .../SavePublicDataApiInfoRequest.java | 23 ++++++++++++++ src/main/resources/config | 2 +- 6 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 src/main/java/contest/collectingbox/module/publicdata/PublicDataApiInfo.java create mode 100644 src/main/java/contest/collectingbox/module/publicdata/PublicDataApiInfoRepository.java create mode 100644 src/main/java/contest/collectingbox/module/publicdata/SavePublicDataApiInfoRequest.java diff --git a/src/main/java/contest/collectingbox/module/publicdata/PublicDataApiController.java b/src/main/java/contest/collectingbox/module/publicdata/PublicDataApiController.java index 5e65fc5..34e244f 100644 --- a/src/main/java/contest/collectingbox/module/publicdata/PublicDataApiController.java +++ b/src/main/java/contest/collectingbox/module/publicdata/PublicDataApiController.java @@ -30,6 +30,12 @@ public class PublicDataApiController { @Value("${public-data.api.key}") private String apiKey; + @PostMapping("/public-data/info") + public ApiResponse savePublicDataApiInfo(@RequestBody List requests) { + publicDataService.savePublicDataApiInfo(requests); + return ApiResponse.ok(requests.size()); + } + @PostMapping("/public-data/load") public ApiResponse loadPublicData(@RequestBody List requests) { long loadedDataCount = 0; diff --git a/src/main/java/contest/collectingbox/module/publicdata/PublicDataApiInfo.java b/src/main/java/contest/collectingbox/module/publicdata/PublicDataApiInfo.java new file mode 100644 index 0000000..467d36a --- /dev/null +++ b/src/main/java/contest/collectingbox/module/publicdata/PublicDataApiInfo.java @@ -0,0 +1,30 @@ +package contest.collectingbox.module.publicdata; + +import contest.collectingbox.module.collectingbox.domain.Tag; +import jakarta.persistence.*; +import lombok.*; + +@Entity +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class PublicDataApiInfo { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(nullable = false) + private String sido; + + @Column(nullable = false) + private String sigungu; + + @Enumerated(EnumType.STRING) + @Column(nullable = false) + private Tag tag; + + @Column(nullable = false) + private String callAddress; +} diff --git a/src/main/java/contest/collectingbox/module/publicdata/PublicDataApiInfoRepository.java b/src/main/java/contest/collectingbox/module/publicdata/PublicDataApiInfoRepository.java new file mode 100644 index 0000000..adae97b --- /dev/null +++ b/src/main/java/contest/collectingbox/module/publicdata/PublicDataApiInfoRepository.java @@ -0,0 +1,6 @@ +package contest.collectingbox.module.publicdata; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface PublicDataApiInfoRepository extends JpaRepository { +} diff --git a/src/main/java/contest/collectingbox/module/publicdata/PublicDataService.java b/src/main/java/contest/collectingbox/module/publicdata/PublicDataService.java index 3a1f1e3..0cf0840 100644 --- a/src/main/java/contest/collectingbox/module/publicdata/PublicDataService.java +++ b/src/main/java/contest/collectingbox/module/publicdata/PublicDataService.java @@ -8,6 +8,7 @@ import org.springframework.stereotype.Component; import java.util.HashSet; +import java.util.List; import java.util.Set; @Slf4j @@ -15,9 +16,15 @@ @RequiredArgsConstructor public class PublicDataService { + private final PublicDataApiInfoRepository publicDataApiInfoRepository; private final PublicDataExtract publicDataExtract; private final KakaoApiManager kakaoApiManager; + public void savePublicDataApiInfo(List requests) { + for (SavePublicDataApiInfoRequest request : requests) { + publicDataApiInfoRepository.save(request.toEntity()); + } + } public long loadPublicData(JSONObject jsonObject, Tag tag) { long loadedDataCount = 0; diff --git a/src/main/java/contest/collectingbox/module/publicdata/SavePublicDataApiInfoRequest.java b/src/main/java/contest/collectingbox/module/publicdata/SavePublicDataApiInfoRequest.java new file mode 100644 index 0000000..8907866 --- /dev/null +++ b/src/main/java/contest/collectingbox/module/publicdata/SavePublicDataApiInfoRequest.java @@ -0,0 +1,23 @@ +package contest.collectingbox.module.publicdata; + +import contest.collectingbox.module.collectingbox.domain.Tag; +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +public class SavePublicDataApiInfoRequest { + private String sido; + private String sigungu; + private Tag tag; + private String callAddress; + + public PublicDataApiInfo toEntity() { + return PublicDataApiInfo.builder() + .sido(sido) + .sigungu(sigungu) + .tag(tag) + .callAddress(callAddress) + .build(); + } +} diff --git a/src/main/resources/config b/src/main/resources/config index 67411b4..084c551 160000 --- a/src/main/resources/config +++ b/src/main/resources/config @@ -1 +1 @@ -Subproject commit 67411b43bf11d04e3279732c8a6fa68d8fabe63a +Subproject commit 084c55116123ca49892d69f1fe072d3ffc5a3318