From a234e9318693d06e3812415c14aba3d2b9448fcf Mon Sep 17 00:00:00 2001 From: itsme-shawn Date: Tue, 23 Jan 2024 04:38:30 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20cron=20scheduler=EA=B0=80=2030=EB=B6=84?= =?UTF-8?q?=EB=A7=88=EB=8B=A4=20notion=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20?= =?UTF-8?q?=EA=B0=B1=EC=8B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/action.yml | 2 ++ .../reddiserver/ReddiServerApplication.java | 2 ++ .../controller/NotionController.java | 3 +- .../scheduler/NotionDataFetchScheduler.java | 28 +++++++++++++++++++ .../reddiserver/service/NotionService.java | 2 ++ 5 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/example/reddiserver/scheduler/NotionDataFetchScheduler.java diff --git a/.github/workflows/action.yml b/.github/workflows/action.yml index 8db2bed..b1f840e 100644 --- a/.github/workflows/action.yml +++ b/.github/workflows/action.yml @@ -56,6 +56,8 @@ jobs: script: | cd /home/ubuntu/ + + aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin 533267191976.dkr.ecr.ap-northeast-2.amazonaws.com ## docker-compose 실행 sudo chmod 666 /var/run/docker.sock diff --git a/src/main/java/com/example/reddiserver/ReddiServerApplication.java b/src/main/java/com/example/reddiserver/ReddiServerApplication.java index 26c3657..9843d15 100644 --- a/src/main/java/com/example/reddiserver/ReddiServerApplication.java +++ b/src/main/java/com/example/reddiserver/ReddiServerApplication.java @@ -3,8 +3,10 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; +import org.springframework.scheduling.annotation.EnableScheduling; @EnableJpaAuditing +@EnableScheduling @SpringBootApplication public class ReddiServerApplication { diff --git a/src/main/java/com/example/reddiserver/controller/NotionController.java b/src/main/java/com/example/reddiserver/controller/NotionController.java index 4a896c6..b058e82 100644 --- a/src/main/java/com/example/reddiserver/controller/NotionController.java +++ b/src/main/java/com/example/reddiserver/controller/NotionController.java @@ -22,8 +22,7 @@ public class NotionController { private final NotionService notionService; - @Hidden - @Operation(summary = "[테스트용] 노션 api 호출해서 자체 DB 갱신") + @Operation(summary = "[수동갱신] 노션 api 호출해서 DB 갱신") @GetMapping("/update") public ApiResponse getNotionData() { diff --git a/src/main/java/com/example/reddiserver/scheduler/NotionDataFetchScheduler.java b/src/main/java/com/example/reddiserver/scheduler/NotionDataFetchScheduler.java new file mode 100644 index 0000000..04f6d6a --- /dev/null +++ b/src/main/java/com/example/reddiserver/scheduler/NotionDataFetchScheduler.java @@ -0,0 +1,28 @@ +package com.example.reddiserver.scheduler; + +import com.example.reddiserver.common.ApiResponse; +import com.example.reddiserver.service.NotionService; +import lombok.RequiredArgsConstructor; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +@RequiredArgsConstructor +public class NotionDataFetchScheduler { + + private final NotionService notionService; + + @Scheduled(cron = "0 */30 * * * *") // 30분마다 실행 + public void fetchNotionData() { + // DB init + notionService.deleteAll(); + + List brandPageIds = notionService.getBrandPageIds(); + notionService.getBrandPageContents(brandPageIds); + + List marketingPageIds = notionService.getMarketingPageIds(); + notionService.getMarketingPageContents(marketingPageIds); + } +} diff --git a/src/main/java/com/example/reddiserver/service/NotionService.java b/src/main/java/com/example/reddiserver/service/NotionService.java index b9206d9..dd12c8c 100644 --- a/src/main/java/com/example/reddiserver/service/NotionService.java +++ b/src/main/java/com/example/reddiserver/service/NotionService.java @@ -61,6 +61,8 @@ public NotionService(WebClient.Builder webClientBuilder, @Value("${notion.api.ke // brand, brand_tags 테이블 초기화 @Transactional public void deleteAll() { + postTagRepository.deleteAll(); + postRepository.deleteAll(); brandTagRepository.deleteAll(); brandRepository.deleteAll();