Skip to content

Commit

Permalink
fix: 계층적 테이블 구조에서 상위 테이블 삭제시 동작 정의
Browse files Browse the repository at this point in the history
- 상위 테이블 삭제시 유효하지 않은 정보는 함께 삭제되게 구현
- 상위 테이블 삭제에도 유효한 정보(메모-멤버, 태스크-멤버)는 NULL로 설정
  • Loading branch information
choyoungwoo9 committed Jul 18, 2024
1 parent 7f33ce1 commit 7ed3874
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 10 deletions.
5 changes: 4 additions & 1 deletion backend/src/project/entity/epic.entity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,10 @@ export class Epic {
@Column({ type: 'int', name: 'project_id' })
projectId: number;

@ManyToOne(() => Project, (project) => project.epicList, { nullable: false })
@ManyToOne(() => Project, (project) => project.epicList, {
nullable: false,
onDelete: 'CASCADE',
})
@JoinColumn({ name: 'project_id' })
project: Project;

Expand Down
5 changes: 4 additions & 1 deletion backend/src/project/entity/link.entity..ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@ export class Link {
@Column({ type: 'int', name: 'project_id' })
projectId: number;

@ManyToOne(() => Project, (project) => project.id, { nullable: false })
@ManyToOne(() => Project, (project) => project.id, {
nullable: false,
onDelete: 'CASCADE',
})
@JoinColumn({ name: 'project_id' })
project: Project;

Expand Down
10 changes: 8 additions & 2 deletions backend/src/project/entity/memo.entity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,10 @@ export class Memo {
@Column({ type: 'int', name: 'project_id' })
projectId: number;

@ManyToOne(() => Project, (project) => project.id, { nullable: false })
@ManyToOne(() => Project, (project) => project.id, {
nullable: false,
onDelete: 'CASCADE',
})
@JoinColumn({ name: 'project_id' })
project: Project;

Expand All @@ -41,7 +44,10 @@ export class Memo {
@UpdateDateColumn({ type: 'timestamp' })
updated_at: Date;

@ManyToOne(() => Member, (member) => member.id, { nullable: false })
@ManyToOne(() => Member, (member) => member.id, {
nullable: true,
onDelete: 'SET NULL',
})
@JoinColumn({ name: 'member_id' })
member: Member;

Expand Down
9 changes: 6 additions & 3 deletions backend/src/project/entity/story.entity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,17 @@ export class Story {
@Column({ type: 'int', name: 'project_id' })
projectId: number;

@ManyToOne(() => Project, { nullable: false })
@ManyToOne(() => Project, { nullable: false, onDelete: 'CASCADE' })
@JoinColumn({ name: 'project_id' })
project: Project;

@Column({ type: 'int', name: 'epic_id' })
epicId: number;

@ManyToOne(() => Epic, (epic) => epic.storyList, { nullable: false })
@ManyToOne(() => Epic, (epic) => epic.storyList, {
nullable: false,
onDelete: 'CASCADE',
})
@JoinColumn({ name: 'epic_id' })
epic: Epic;

Expand All @@ -44,7 +47,7 @@ export class Story {
@Column({ type: 'varchar', length: 255, nullable: false })
status: StoryStatus;

@OneToMany(()=>Task, (task)=>task.story)
@OneToMany(() => Task, (task) => task.story)
taskList: Task[];

static of(
Expand Down
12 changes: 9 additions & 3 deletions backend/src/project/entity/task.entity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,17 @@ export class Task {
@Column({ type: 'int', name: 'project_id', nullable: false })
projectId: number;

@ManyToOne(() => Project, { nullable: false })
@ManyToOne(() => Project, { nullable: false, onDelete: 'CASCADE' })
@JoinColumn({ name: 'project_id' })
project: Project;

@Column({ type: 'int', name: 'story_id', nullable: false })
storyId: number;

@ManyToOne(() => Story, (story) => story.taskList, { nullable: false })
@ManyToOne(() => Story, (story) => story.taskList, {
nullable: false,
onDelete: 'CASCADE',
})
@JoinColumn({ name: 'story_id' })
story: Story;

Expand All @@ -52,7 +55,10 @@ export class Task {
@Column({ type: 'int', name: 'member_id', nullable: true })
assignedMemberId: number;

@ManyToOne(() => Member, (member) => member.id, { nullable: true })
@ManyToOne(() => Member, (member) => member.id, {
nullable: true,
onDelete: 'SET NULL',
})
@JoinColumn({ name: 'member_id' })
member: Member;

Expand Down

0 comments on commit 7ed3874

Please sign in to comment.