diff --git a/src/main/java/com/ject/studytrip/pomodoro/domain/factory/PomodoroFactory.java b/src/main/java/com/ject/studytrip/pomodoro/domain/factory/PomodoroFactory.java new file mode 100644 index 0000000..cc5df8f --- /dev/null +++ b/src/main/java/com/ject/studytrip/pomodoro/domain/factory/PomodoroFactory.java @@ -0,0 +1,17 @@ +package com.ject.studytrip.pomodoro.domain.factory; + +import com.ject.studytrip.pomodoro.domain.model.Pomodoro; +import com.ject.studytrip.trip.domain.model.DailyGoal; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class PomodoroFactory { + public static Pomodoro create( + DailyGoal dailyGoal, + int focusDurationInSeconds, + int focusCount, + int breakDurationInSeconds) { + return Pomodoro.of(dailyGoal, focusDurationInSeconds, focusCount, breakDurationInSeconds); + } +} diff --git a/src/main/java/com/ject/studytrip/pomodoro/domain/model/Pomodoro.java b/src/main/java/com/ject/studytrip/pomodoro/domain/model/Pomodoro.java new file mode 100644 index 0000000..3c7af64 --- /dev/null +++ b/src/main/java/com/ject/studytrip/pomodoro/domain/model/Pomodoro.java @@ -0,0 +1,43 @@ +package com.ject.studytrip.pomodoro.domain.model; + +import com.ject.studytrip.global.common.entity.BaseTimeEntity; +import com.ject.studytrip.trip.domain.model.DailyGoal; +import jakarta.persistence.*; +import lombok.*; + +@Entity +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor(access = AccessLevel.PRIVATE) +@Getter +@Builder(access = AccessLevel.PRIVATE) +public class Pomodoro extends BaseTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "daily_goal_id", nullable = false) + private DailyGoal dailyGoal; + + private int focusDurationInSeconds; // 집중 시간(초) + private int focusCount; // 집중 세션 횟수 + private int breakDurationInSeconds; // 휴식 시간(초) + private int totalFocusTimeInSeconds; // 총 집중 시간(초) + + // TODO : 추후 집중 세션 개수와 휴식 시간을 설정할 수 있는 기능이 추가될 경우 리팩토링 + // 우선은 고정 값 세팅 + public static Pomodoro of( + DailyGoal dailyGoal, + int focusDurationInSeconds, + int focusCount, + int breakDurationInSeconds) { + return Pomodoro.builder() + .dailyGoal(dailyGoal) + .focusDurationInSeconds(focusDurationInSeconds) + .focusCount(1) + .breakDurationInSeconds(0) + .totalFocusTimeInSeconds(0) + .build(); + } +}