Skip to content

Commit 797de42

Browse files
committed
CLAP-291 HotFix: 댓글 삭제 시 히스토리 및 첨부파일 삭제 처리
1 parent 637259f commit 797de42

18 files changed

+113
-39
lines changed

src/main/java/clap/server/adapter/outbound/persistense/AttachmentPersistenceAdapter.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,29 +39,29 @@ public void saveAll(List<Attachment> attachments) {
3939

4040
@Override
4141
public List<Attachment> findAllByTaskIdAndCommentIsNull(final Long taskId) {
42-
List<AttachmentEntity> attachmentEntities = attachmentRepository.findAllByTask_TaskIdAndCommentIsNullAndIsDeletedIsFalse(taskId);
42+
List<AttachmentEntity> attachmentEntities = attachmentRepository.findAllByTask_TaskIdAndCommentIsNull(taskId);
4343
return attachmentEntities.stream()
4444
.map(attachmentPersistenceMapper::toDomain)
4545
.collect(Collectors.toList());
4646
}
4747

4848
@Override
4949
public List<Attachment> findAllByTaskIdAndCommentIsNullAndAttachmentId(final Long taskId, final List<Long> attachmentIds) {
50-
List<AttachmentEntity> attachmentEntities = attachmentRepository.findAllByTask_TaskIdAndCommentIsNullAndIsDeletedIsFalseAndAttachmentIdIn(taskId, attachmentIds);
50+
List<AttachmentEntity> attachmentEntities = attachmentRepository.findAllByTask_TaskIdAndCommentIsNullAndAttachmentIdIn(taskId, attachmentIds);
5151
return attachmentEntities.stream()
5252
.map(attachmentPersistenceMapper::toDomain)
5353
.collect(Collectors.toList());
5454
}
5555

5656
@Override
5757
public Optional<Attachment> findByCommentId(Long commentId) {
58-
Optional<AttachmentEntity> attachmentEntity = attachmentRepository.findByComment_CommentIdAndIsDeletedFalse(commentId);
58+
Optional<AttachmentEntity> attachmentEntity = attachmentRepository.findByComment_CommentId(commentId);
5959
return attachmentEntity.map(attachmentPersistenceMapper::toDomain);
6060
}
6161

6262
@Override
6363
public List<Attachment> findAllByTaskIdAndCommentIsNotNull(final Long taskId) {
64-
List<AttachmentEntity> attachmentEntities = attachmentRepository.findAllByTask_TaskIdAndCommentIsNotNullAndIsDeletedIsFalse(taskId);
64+
List<AttachmentEntity> attachmentEntities = attachmentRepository.findAllByTask_TaskIdAndCommentIsNotNull(taskId);
6565
return attachmentEntities.stream()
6666
.map(attachmentPersistenceMapper::toDomain)
6767
.collect(Collectors.toList());

src/main/java/clap/server/adapter/outbound/persistense/CommentPersistenceAdapter.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import clap.server.adapter.outbound.persistense.entity.task.CommentEntity;
44
import clap.server.adapter.outbound.persistense.mapper.CommentPersistenceMapper;
5-
import clap.server.adapter.outbound.persistense.repository.task.CommentRepository;
5+
import clap.server.adapter.outbound.persistense.repository.history.CommentRepository;
66
import clap.server.application.port.outbound.task.CommandCommentPort;
77
import clap.server.application.port.outbound.task.LoadCommentPort;
88
import clap.server.common.annotation.architecture.PersistenceAdapter;
@@ -31,7 +31,7 @@ public Comment saveComment(Comment comment) {
3131
}
3232

3333
@Override
34-
public void deleteComment(Comment comment) {
35-
commentRepository.delete(commentPersistenceMapper.toEntity(comment));
34+
public void deleteCommentWithTaskHistory(Long commentId) {
35+
commentRepository.deleteCommentWithTaskHistory(commentId);
3636
}
3737
}

src/main/java/clap/server/adapter/outbound/persistense/TaskHistoryPersistenceAdapter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33

44
import clap.server.adapter.outbound.persistense.entity.task.TaskHistoryEntity;
55
import clap.server.adapter.outbound.persistense.mapper.TaskHistoryPersistenceMapper;
6-
import clap.server.adapter.outbound.persistense.repository.task.TaskHistoryRepository;
6+
import clap.server.adapter.outbound.persistense.repository.history.TaskHistoryRepository;
77
import clap.server.application.port.outbound.taskhistory.CommandTaskHistoryPort;
88
import clap.server.application.port.outbound.taskhistory.LoadTaskHistoryPort;
99
import clap.server.common.annotation.architecture.PersistenceAdapter;
1010

11+
1112
import clap.server.domain.model.task.TaskHistory;
1213
import lombok.RequiredArgsConstructor;
1314

src/main/java/clap/server/adapter/outbound/persistense/entity/task/AttachmentEntity.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,19 @@
33
import clap.server.adapter.outbound.persistense.entity.common.BaseTimeEntity;
44
import jakarta.persistence.*;
55
import lombok.AccessLevel;
6+
import lombok.Builder;
67
import lombok.Getter;
78
import lombok.NoArgsConstructor;
89
import lombok.experimental.SuperBuilder;
10+
import org.hibernate.annotations.SQLDelete;
11+
import org.hibernate.annotations.SQLRestriction;
912

1013
@Entity
1114
@Table(name = "attachment")
1215
@Getter
1316
@SuperBuilder
1417
@NoArgsConstructor(access = AccessLevel.PROTECTED)
18+
@SQLRestriction("is_deleted = false")
1519
public class AttachmentEntity extends BaseTimeEntity {
1620
@Id
1721
@GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -35,6 +39,7 @@ public class AttachmentEntity extends BaseTimeEntity {
3539
@JoinColumn(name = "comment_id")
3640
private CommentEntity comment;
3741

38-
@Column(nullable = false)
39-
private boolean isDeleted;
42+
@Column(name= "is_deleted", nullable = false)
43+
@Builder.Default
44+
private boolean isDeleted = Boolean.FALSE;
4045
}

src/main/java/clap/server/adapter/outbound/persistense/entity/task/CommentEntity.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,16 @@
99
import lombok.NoArgsConstructor;
1010
import lombok.experimental.SuperBuilder;
1111
import org.hibernate.annotations.SQLDelete;
12+
import org.hibernate.annotations.SQLRestriction;
13+
import org.hibernate.annotations.Where;
1214

1315
@Entity
1416
@Table(name = "comment")
1517
@Getter
1618
@SuperBuilder
1719
@NoArgsConstructor(access = AccessLevel.PROTECTED)
18-
@SQLDelete(sql = "UPDATE Comment SET is_Deleted = true WHERE comment_id = ?")
20+
@SQLDelete(sql = "UPDATE comment SET is_deleted = true WHERE comment_id = ?")
21+
@SQLRestriction("is_deleted = false")
1922
public class CommentEntity extends BaseTimeEntity {
2023
@Id
2124
@GeneratedValue(strategy = GenerationType.IDENTITY)

src/main/java/clap/server/adapter/outbound/persistense/entity/task/TaskHistoryEntity.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,19 @@
44
import clap.server.adapter.outbound.persistense.entity.task.constant.TaskHistoryType;
55
import jakarta.persistence.*;
66
import lombok.AccessLevel;
7+
import lombok.Builder;
78
import lombok.Getter;
89
import lombok.NoArgsConstructor;
910
import lombok.experimental.SuperBuilder;
11+
import org.hibernate.annotations.SQLDelete;
12+
import org.hibernate.annotations.SQLRestriction;
1013

1114
@Entity
1215
@Table(name = "task_history")
1316
@Getter
1417
@SuperBuilder
1518
@NoArgsConstructor(access = AccessLevel.PROTECTED)
19+
@SQLRestriction("is_deleted = false")
1620
public class TaskHistoryEntity extends BaseTimeEntity {
1721
@Id
1822
@GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -29,4 +33,8 @@ public class TaskHistoryEntity extends BaseTimeEntity {
2933
@OneToOne(fetch = FetchType.LAZY)
3034
@JoinColumn(name = "comment_id")
3135
private CommentEntity comment;
36+
37+
@Column(name="is_deleted", nullable = false)
38+
@Builder.Default
39+
private boolean isDeleted = Boolean.FALSE;
3240
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package clap.server.adapter.outbound.persistense.repository.history;
2+
3+
4+
public interface CommentCustomRepository {
5+
void deleteCommentWithTaskHistory(Long commentId);
6+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package clap.server.adapter.outbound.persistense.repository.history;
2+
3+
import clap.server.adapter.outbound.persistense.entity.task.QCommentEntity;
4+
import clap.server.adapter.outbound.persistense.entity.task.QTaskHistoryEntity;
5+
import com.querydsl.jpa.impl.JPAQueryFactory;
6+
import lombok.RequiredArgsConstructor;
7+
8+
@RequiredArgsConstructor
9+
public class CommentCustomRepositoryImpl implements CommentCustomRepository{
10+
private final JPAQueryFactory queryFactory;
11+
public void deleteCommentWithTaskHistory(Long commentId) {
12+
QTaskHistoryEntity taskHistory = QTaskHistoryEntity.taskHistoryEntity;
13+
QCommentEntity comment = QCommentEntity.commentEntity;
14+
15+
queryFactory
16+
.update(comment)
17+
.set(comment.isDeleted, true)
18+
.where(comment.commentId.eq(commentId))
19+
.execute();
20+
queryFactory
21+
.update(taskHistory)
22+
.set(taskHistory.isDeleted, true)
23+
.where(taskHistory.comment.commentId.eq(commentId))
24+
.execute();
25+
}
26+
}

src/main/java/clap/server/adapter/outbound/persistense/repository/task/CommentRepository.java renamed to src/main/java/clap/server/adapter/outbound/persistense/repository/history/CommentRepository.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
package clap.server.adapter.outbound.persistense.repository.task;
1+
package clap.server.adapter.outbound.persistense.repository.history;
22

33
import clap.server.adapter.outbound.persistense.entity.task.CommentEntity;
44
import org.springframework.data.jpa.repository.JpaRepository;
55
import org.springframework.stereotype.Repository;
66

77
@Repository
8-
public interface CommentRepository extends JpaRepository<CommentEntity, Long> {
8+
public interface CommentRepository extends JpaRepository<CommentEntity, Long>, CommentCustomRepository {
99
}

src/main/java/clap/server/adapter/outbound/persistense/repository/task/TaskHistoryCustomRepository.java renamed to src/main/java/clap/server/adapter/outbound/persistense/repository/history/TaskHistoryCustomRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package clap.server.adapter.outbound.persistense.repository.task;
1+
package clap.server.adapter.outbound.persistense.repository.history;
22

33
import clap.server.adapter.outbound.persistense.entity.task.TaskHistoryEntity;
44

0 commit comments

Comments
 (0)