diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 71e5b81..cb1bb98 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -23,5 +23,20 @@ jobs: git fetch --all git reset --hard origin/main - docker compose -f docker-compose-dev.yml --env-file .env.prod down - docker compose -f docker-compose-dev.yml --env-file .env.prod up -d --build + docker compose -f docker-compose-dev.yml --env-file .env down || true + docker compose -f docker-compose-dev.yml --env-file .env up -d --build --force-recreate --remove-orphans + + # API가 뜰 때까지 최대 60초 대기 + for i in {1..30}; do + if curl -fsS http://127.0.0.1:8080/v3/api-docs > /dev/null; then + echo "API is up" + exit 0 + fi + sleep 2 + done + + echo "API did not become ready" + docker ps -a + docker logs timeto-app-dev --tail 200 + exit 1 + diff --git a/src/main/java/com/umc/timeto/folder/entity/Folder.java b/src/main/java/com/umc/timeto/folder/entity/Folder.java index 335b585..3365360 100644 --- a/src/main/java/com/umc/timeto/folder/entity/Folder.java +++ b/src/main/java/com/umc/timeto/folder/entity/Folder.java @@ -1,9 +1,13 @@ package com.umc.timeto.folder.entity; import com.umc.timeto.goal.entity.Goal; +import com.umc.timeto.todo.domain.Todo; import jakarta.persistence.*; import lombok.*; +import java.util.ArrayList; +import java.util.List; + @Entity @Getter @Builder @@ -25,6 +29,10 @@ public class Folder { @JoinColumn(name = "goal_id", nullable = false) private Goal goal; + @Builder.Default + @OneToMany(mappedBy = "folder", cascade = CascadeType.ALL, orphanRemoval = true) + private List todos = new ArrayList<>(); + public Folder(String name, Goal goal) { this.name = name; this.goal = goal; diff --git a/src/main/java/com/umc/timeto/goal/entity/Goal.java b/src/main/java/com/umc/timeto/goal/entity/Goal.java index d012675..e914995 100644 --- a/src/main/java/com/umc/timeto/goal/entity/Goal.java +++ b/src/main/java/com/umc/timeto/goal/entity/Goal.java @@ -1,9 +1,13 @@ package com.umc.timeto.goal.entity; +import com.umc.timeto.folder.entity.Folder; import com.umc.timeto.member.entity.Member; import jakarta.persistence.*; import lombok.*; +import java.util.ArrayList; +import java.util.List; + @Entity @Getter @Setter @@ -24,6 +28,10 @@ public class Goal { @JoinColumn(name="member_id") private Member member; + @Builder.Default + @OneToMany(mappedBy = "goal", cascade = CascadeType.ALL, orphanRemoval = true) + private List folders = new ArrayList<>(); + public void update(String name, String color) { this.name = name; this.color = color; diff --git a/src/main/java/com/umc/timeto/todo/domain/Todo.java b/src/main/java/com/umc/timeto/todo/domain/Todo.java index fb236b7..8d55da5 100644 --- a/src/main/java/com/umc/timeto/todo/domain/Todo.java +++ b/src/main/java/com/umc/timeto/todo/domain/Todo.java @@ -62,7 +62,6 @@ public void changeSortOrder(Integer sortOrder) { @JoinColumn(name = "folder_id", nullable = false) private Folder folder; - //todo 삭제 시 연결된 block 자동 삭제 @OneToOne( mappedBy = "todo",