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