From 235f8cf849c8f5b721d414fa51ba3c2ce403c4e0 Mon Sep 17 00:00:00 2001 From: "Choi, Minwoo" Date: Sun, 13 Jul 2025 16:48:39 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=AF=B8=EC=85=98,=20=ED=95=99?= =?UTF-8?q?=EC=8A=B5=EA=B8=B0=EB=A1=9D,=20=EB=8D=B0=EC=9D=BC=EB=A6=AC=20?= =?UTF-8?q?=EB=AF=B8=EC=85=98,=20=EB=8D=B0=EC=9D=BC=EB=A6=AC=20=EB=AA=A9?= =?UTF-8?q?=ED=91=9C=20=EB=8F=84=EB=A9=94=EC=9D=B8=20=EC=97=94=ED=8B=B0?= =?UTF-8?q?=ED=8B=B0=20=EC=83=9D=EC=84=B1(#24)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mission/domain/model/DailyMission.java | 30 +++++++++++++++ .../mission/domain/model/Mission.java | 38 +++++++++++++++++++ .../studylog/domain/model/StudyLog.java | 32 ++++++++++++++++ .../trip/domain/model/DailyGoal.java | 27 +++++++++++++ 4 files changed, 127 insertions(+) create mode 100644 src/main/java/com/ject/studytrip/mission/domain/model/DailyMission.java create mode 100644 src/main/java/com/ject/studytrip/mission/domain/model/Mission.java create mode 100644 src/main/java/com/ject/studytrip/studylog/domain/model/StudyLog.java create mode 100644 src/main/java/com/ject/studytrip/trip/domain/model/DailyGoal.java 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(); + } +}