diff --git a/src/main/java/com/ject/studytrip/mission/domain/model/DailyMission.java b/src/main/java/com/ject/studytrip/mission/domain/model/DailyMission.java new file mode 100644 index 0000000..efbaeda --- /dev/null +++ b/src/main/java/com/ject/studytrip/mission/domain/model/DailyMission.java @@ -0,0 +1,30 @@ +package com.ject.studytrip.mission.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 DailyMission extends BaseTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "mission_id", nullable = false) + private Mission mission; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "daily_goal_id", nullable = false) + private DailyGoal dailyGoal; + + public static DailyMission of(Mission mission, DailyGoal dailyGoal) { + return DailyMission.builder().mission(mission).dailyGoal(dailyGoal).build(); + } +} diff --git a/src/main/java/com/ject/studytrip/mission/domain/model/Mission.java b/src/main/java/com/ject/studytrip/mission/domain/model/Mission.java new file mode 100644 index 0000000..fcb0ec6 --- /dev/null +++ b/src/main/java/com/ject/studytrip/mission/domain/model/Mission.java @@ -0,0 +1,38 @@ +package com.ject.studytrip.mission.domain.model; + +import com.ject.studytrip.global.common.entity.BaseTimeEntity; +import com.ject.studytrip.stamp.domain.model.Stamp; +import jakarta.persistence.*; +import lombok.*; + +@Entity +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor(access = AccessLevel.PRIVATE) +@Getter +@Builder(access = AccessLevel.PRIVATE) +public class Mission extends BaseTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "stamp_id", nullable = false) + private Stamp stamp; + + @Column(nullable = false) + private String name; + + private int missionOrder; + + private boolean completed; + + public static Mission of(Stamp stamp, String name, int missionOrder) { + return Mission.builder() + .stamp(stamp) + .name(name) + .missionOrder(missionOrder) + .completed(false) + .build(); + } +} diff --git a/src/main/java/com/ject/studytrip/studylog/domain/model/StudyLog.java b/src/main/java/com/ject/studytrip/studylog/domain/model/StudyLog.java new file mode 100644 index 0000000..cc20a41 --- /dev/null +++ b/src/main/java/com/ject/studytrip/studylog/domain/model/StudyLog.java @@ -0,0 +1,32 @@ +package com.ject.studytrip.studylog.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 StudyLog extends BaseTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "daily_goal_id", nullable = false) + private DailyGoal dailyGoal; + + @Column(nullable = false) + private String title; + + @Column(nullable = false) + private String content; + + public static StudyLog of(DailyGoal dailyGoal, String title, String content) { + return StudyLog.builder().dailyGoal(dailyGoal).title(title).content(content).build(); + } +} diff --git a/src/main/java/com/ject/studytrip/trip/domain/model/DailyGoal.java b/src/main/java/com/ject/studytrip/trip/domain/model/DailyGoal.java new file mode 100644 index 0000000..e7ef978 --- /dev/null +++ b/src/main/java/com/ject/studytrip/trip/domain/model/DailyGoal.java @@ -0,0 +1,27 @@ +package com.ject.studytrip.trip.domain.model; + +import com.ject.studytrip.global.common.entity.BaseTimeEntity; +import jakarta.persistence.*; +import lombok.*; + +@Entity +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor(access = AccessLevel.PRIVATE) +@Getter +@Builder(access = AccessLevel.PRIVATE) +public class DailyGoal extends BaseTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "trip_id", nullable = false) + private Trip trip; + + private boolean completed; + + public static DailyGoal of(Trip trip) { + return DailyGoal.builder().trip(trip).completed(false).build(); + } +}