Skip to content

Commit 62c43d7

Browse files
committed
feat: 예외 엔티티 추가 및 일부 엔티티 수정
1 parent 347c5f8 commit 62c43d7

File tree

4 files changed

+73
-4
lines changed

4 files changed

+73
-4
lines changed

src/main/java/com/back/domain/study/plan/entity/StudyPlan.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.back.domain.study.plan.entity;
22

3+
import com.back.domain.study.record.entity.StudyRecord;
34
import com.back.domain.user.entity.User;
45
import com.back.global.entity.BaseEntity;
56
import jakarta.persistence.*;
@@ -45,4 +46,10 @@ public class StudyPlan extends BaseEntity {
4546

4647
@OneToOne(mappedBy = "studyPlan",cascade = CascadeType.ALL, fetch = FetchType.LAZY)
4748
private RepeatRule repeatRule;
49+
50+
@OneToMany(mappedBy = "todo", cascade = CascadeType.ALL, orphanRemoval = true)
51+
private List<StudyRecord> studyRecords;
52+
53+
@OneToMany(mappedBy = "studyPlan", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
54+
private List<StudyPlanException> exceptions = new ArrayList<>();
4855
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package com.back.domain.study.plan.entity;
2+
3+
import com.back.global.entity.BaseEntity;
4+
import jakarta.persistence.*;
5+
import lombok.AllArgsConstructor;
6+
import lombok.Getter;
7+
import lombok.NoArgsConstructor;
8+
import lombok.Setter;
9+
10+
import java.time.LocalDateTime;
11+
12+
@Entity
13+
@Table(name = "study_plan_exception")
14+
@Getter
15+
@Setter
16+
@NoArgsConstructor
17+
@AllArgsConstructor
18+
//이후 날짜 반복 계획 모두 삭제는 원본 엔티티의 untilDate를 수정해 구현
19+
//단일 삭제 또는 단일, 이후 모두 수정은 이 엔티티로 구현
20+
public class StudyPlanException extends BaseEntity {
21+
22+
@ManyToOne(fetch = FetchType.LAZY)
23+
@JoinColumn(name = "study_plan_id", nullable = false)
24+
private StudyPlan studyPlan;
25+
26+
// 예외가 발생한 날짜
27+
@Column(name = "exception_date", nullable = false)
28+
private LocalDateTime exceptionDate;
29+
30+
//예외 유형 (수정 / 삭제)
31+
@Enumerated(EnumType.STRING)
32+
@Column(nullable = false)
33+
private ExceptionType exceptionType;
34+
35+
// 적용 범위 (이 날짜만 / 이후 모든 날짜)
36+
@Enumerated(EnumType.STRING)
37+
@Column(name = "apply_scope")
38+
private ApplyScope applyScope;
39+
40+
// 수정된 내용 (MODIFIED 타입인 경우)
41+
@Column(name = "modified_subject")
42+
private String modifiedSubject;
43+
44+
@Column(name = "modified_start_date")
45+
private LocalDateTime modifiedStartDate;
46+
47+
@Column(name = "modified_end_date")
48+
private LocalDateTime modifiedEndDate;
49+
50+
@Enumerated(EnumType.STRING)
51+
@Column(name = "modified_color")
52+
private Color modifiedColor;
53+
54+
public enum ExceptionType {
55+
DELETED, // 해당 날짜 삭제
56+
MODIFIED // 해당 날짜 수정
57+
}
58+
59+
public enum ApplyScope {
60+
THIS_ONLY, // 이 날짜만
61+
FROM_THIS_DATE // 이 날짜부터 이후 모든 날짜
62+
}
63+
}

src/main/java/com/back/domain/study/record/entity/StudyRecord.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.back.domain.study.record.entity;
22

3+
import com.back.domain.study.plan.entity.StudyPlan;
34
import com.back.domain.study.todo.entity.Todo;
45
import com.back.domain.studyroom.entity.Room;
56
import com.back.global.entity.BaseEntity;
@@ -17,8 +18,8 @@
1718
@Getter
1819
public class StudyRecord extends BaseEntity {
1920
@ManyToOne(fetch = FetchType.LAZY)
20-
@JoinColumn(name = "todo_id")
21-
private Todo todo;
21+
@JoinColumn(name = "plan_id")
22+
private StudyPlan plan;
2223

2324
@ManyToOne(fetch = FetchType.LAZY)
2425
@JoinColumn(name = "room_id")

src/main/java/com/back/domain/study/todo/entity/Todo.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,4 @@ public class Todo extends BaseEntity {
2424

2525
private LocalDateTime date;
2626

27-
@OneToMany(mappedBy = "todo", cascade = CascadeType.ALL, orphanRemoval = true)
28-
private List<StudyRecord> studyRecords;
2927
}

0 commit comments

Comments
 (0)