From d0d8ee84ac76aa5fbe7e746e1529dd138cf19932 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=84=B8=EC=A4=80?= <74056843+sejoon00@users.noreply.github.com> Date: Sun, 30 Mar 2025 15:24:14 +0900 Subject: [PATCH] =?UTF-8?q?[hotfix]=20softdelete=20hibernate=206=EB=A1=9C?= =?UTF-8?q?=20=EA=B5=90=EC=B2=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/mapper/ChildProblemMapperImpl.java | 2 +- .../problem/service/mapper/ProblemMapperImpl.java | 2 +- .../domain/problemset/domain/QProblemSet.java | 2 -- .../admin/publish/domain/Publish.java | 2 ++ .../problem/domain/childProblem/ChildProblem.java | 2 ++ .../domain/problem/domain/problem/Problem.java | 2 ++ .../domain/problemset/domain/ProblemSet.java | 11 +++-------- .../repository/ProblemSetRepository.java | 6 ------ .../service/ProblemSetDeleteService.java | 1 - .../problemset/service/ProblemSetGetService.java | 6 +----- .../service/ProblemSetUpdateService.java | 14 ++++---------- 11 files changed, 16 insertions(+), 34 deletions(-) diff --git a/src/main/generated/com/moplus/moplus_server/domain/problem/service/mapper/ChildProblemMapperImpl.java b/src/main/generated/com/moplus/moplus_server/domain/problem/service/mapper/ChildProblemMapperImpl.java index 7b1bd0c8..c795bb15 100644 --- a/src/main/generated/com/moplus/moplus_server/domain/problem/service/mapper/ChildProblemMapperImpl.java +++ b/src/main/generated/com/moplus/moplus_server/domain/problem/service/mapper/ChildProblemMapperImpl.java @@ -11,7 +11,7 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2025-03-24T01:02:22+0900", + date = "2025-03-30T15:17:55+0900", comments = "version: 1.6.3, compiler: javac, environment: Java 17.0.10 (JetBrains s.r.o.)" ) @Component diff --git a/src/main/generated/com/moplus/moplus_server/domain/problem/service/mapper/ProblemMapperImpl.java b/src/main/generated/com/moplus/moplus_server/domain/problem/service/mapper/ProblemMapperImpl.java index 6992d6a4..58727a98 100644 --- a/src/main/generated/com/moplus/moplus_server/domain/problem/service/mapper/ProblemMapperImpl.java +++ b/src/main/generated/com/moplus/moplus_server/domain/problem/service/mapper/ProblemMapperImpl.java @@ -15,7 +15,7 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2025-03-24T01:02:22+0900", + date = "2025-03-30T15:17:55+0900", comments = "version: 1.6.3, compiler: javac, environment: Java 17.0.10 (JetBrains s.r.o.)" ) @Component diff --git a/src/main/generated/com/moplus/moplus_server/domain/problemset/domain/QProblemSet.java b/src/main/generated/com/moplus/moplus_server/domain/problemset/domain/QProblemSet.java index dc1cf581..fb79798e 100644 --- a/src/main/generated/com/moplus/moplus_server/domain/problemset/domain/QProblemSet.java +++ b/src/main/generated/com/moplus/moplus_server/domain/problemset/domain/QProblemSet.java @@ -31,8 +31,6 @@ public class QProblemSet extends EntityPathBase { public final NumberPath id = createNumber("id", Long.class); - public final BooleanPath isDeleted = createBoolean("isDeleted"); - public final ListPath> problemIds = this.>createList("problemIds", Long.class, NumberPath.class, PathInits.DIRECT2); public final QTitle title; diff --git a/src/main/java/com/moplus/moplus_server/admin/publish/domain/Publish.java b/src/main/java/com/moplus/moplus_server/admin/publish/domain/Publish.java index 5a60f3e5..db528812 100644 --- a/src/main/java/com/moplus/moplus_server/admin/publish/domain/Publish.java +++ b/src/main/java/com/moplus/moplus_server/admin/publish/domain/Publish.java @@ -13,9 +13,11 @@ import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; +import org.hibernate.annotations.SoftDelete; @Getter @Entity +@SoftDelete @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Publish extends BaseEntity { diff --git a/src/main/java/com/moplus/moplus_server/domain/problem/domain/childProblem/ChildProblem.java b/src/main/java/com/moplus/moplus_server/domain/problem/domain/childProblem/ChildProblem.java index df5f090a..45e831c4 100644 --- a/src/main/java/com/moplus/moplus_server/domain/problem/domain/childProblem/ChildProblem.java +++ b/src/main/java/com/moplus/moplus_server/domain/problem/domain/childProblem/ChildProblem.java @@ -25,9 +25,11 @@ import lombok.Getter; import lombok.NoArgsConstructor; import org.hibernate.annotations.BatchSize; +import org.hibernate.annotations.SoftDelete; @Getter @Entity +@SoftDelete @NoArgsConstructor(access = AccessLevel.PROTECTED) public class ChildProblem extends BaseEntity { diff --git a/src/main/java/com/moplus/moplus_server/domain/problem/domain/problem/Problem.java b/src/main/java/com/moplus/moplus_server/domain/problem/domain/problem/Problem.java index c0cca478..6e552ad2 100644 --- a/src/main/java/com/moplus/moplus_server/domain/problem/domain/problem/Problem.java +++ b/src/main/java/com/moplus/moplus_server/domain/problem/domain/problem/Problem.java @@ -31,9 +31,11 @@ import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; +import org.hibernate.annotations.SoftDelete; @Getter @Entity +@SoftDelete @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Problem extends BaseEntity { diff --git a/src/main/java/com/moplus/moplus_server/domain/problemset/domain/ProblemSet.java b/src/main/java/com/moplus/moplus_server/domain/problemset/domain/ProblemSet.java index 8f8a4667..db6e8795 100644 --- a/src/main/java/com/moplus/moplus_server/domain/problemset/domain/ProblemSet.java +++ b/src/main/java/com/moplus/moplus_server/domain/problemset/domain/ProblemSet.java @@ -23,10 +23,12 @@ import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; +import org.hibernate.annotations.SoftDelete; @Getter @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) +@SoftDelete public class ProblemSet extends BaseEntity { @Id @@ -37,9 +39,6 @@ public class ProblemSet extends BaseEntity { @Embedded private Title title; - @Column(nullable = false) - private boolean isDeleted; - @Enumerated(EnumType.STRING) @Column(nullable = false) private ProblemSetConfirmStatus confirmStatus; @@ -53,7 +52,6 @@ public class ProblemSet extends BaseEntity { @Builder public ProblemSet(String title, List problemIds) { this.title = new Title(title); - this.isDeleted = false; this.confirmStatus = ProblemSetConfirmStatus.NOT_CONFIRMED; this.problemIds = problemIds; } @@ -69,10 +67,6 @@ public void updateProblemOrder(List newProblems) { this.problemIds = new ArrayList<>(newProblems); } - public void deleteProblemSet() { - this.isDeleted = true; - } - public void toggleConfirm(List problems) { if (this.confirmStatus == ProblemSetConfirmStatus.NOT_CONFIRMED) { if (problems.isEmpty()) { @@ -111,4 +105,5 @@ public boolean isProblemsChanged(List newProblems) { } return false; } + } diff --git a/src/main/java/com/moplus/moplus_server/domain/problemset/repository/ProblemSetRepository.java b/src/main/java/com/moplus/moplus_server/domain/problemset/repository/ProblemSetRepository.java index b48961e5..c1a61111 100644 --- a/src/main/java/com/moplus/moplus_server/domain/problemset/repository/ProblemSetRepository.java +++ b/src/main/java/com/moplus/moplus_server/domain/problemset/repository/ProblemSetRepository.java @@ -3,7 +3,6 @@ import com.moplus.moplus_server.domain.problemset.domain.ProblemSet; import com.moplus.moplus_server.domain.problemset.domain.ProblemSetConfirmStatus; import com.moplus.moplus_server.global.error.exception.ErrorCode; -import com.moplus.moplus_server.global.error.exception.InvalidValueException; import com.moplus.moplus_server.global.error.exception.NotFoundException; import org.springframework.data.jpa.repository.JpaRepository; @@ -16,11 +15,6 @@ default ProblemSet findByIdElseThrow(Long problemSetId) { default void validatePublishableProblemSet(Long problemSetId) { ProblemSet problemSet = findByIdElseThrow(problemSetId); - //이거 soft delete 어노테이션으로 자동화 해야함(리팩토링 필요) - if (problemSet.isDeleted()) { - throw new InvalidValueException(ErrorCode.PROBLEM_SET_DELETED); - } - if (!ProblemSetConfirmStatus.CONFIRMED.equals(problemSet.getConfirmStatus())) { throw new NotFoundException(ErrorCode.PROBLEM_SET_NOT_CONFIRMED); } diff --git a/src/main/java/com/moplus/moplus_server/domain/problemset/service/ProblemSetDeleteService.java b/src/main/java/com/moplus/moplus_server/domain/problemset/service/ProblemSetDeleteService.java index 830d751e..80fe7405 100644 --- a/src/main/java/com/moplus/moplus_server/domain/problemset/service/ProblemSetDeleteService.java +++ b/src/main/java/com/moplus/moplus_server/domain/problemset/service/ProblemSetDeleteService.java @@ -15,7 +15,6 @@ public class ProblemSetDeleteService { @Transactional public void deleteProblemSet(Long problemSetId) { ProblemSet problemSet = problemSetRepository.findByIdElseThrow(problemSetId); - problemSet.deleteProblemSet(); } } \ No newline at end of file diff --git a/src/main/java/com/moplus/moplus_server/domain/problemset/service/ProblemSetGetService.java b/src/main/java/com/moplus/moplus_server/domain/problemset/service/ProblemSetGetService.java index 8d7791b3..91d5392e 100644 --- a/src/main/java/com/moplus/moplus_server/domain/problemset/service/ProblemSetGetService.java +++ b/src/main/java/com/moplus/moplus_server/domain/problemset/service/ProblemSetGetService.java @@ -10,8 +10,6 @@ import com.moplus.moplus_server.domain.problemset.domain.ProblemSet; import com.moplus.moplus_server.domain.problemset.repository.ProblemSetRepository; import com.moplus.moplus_server.domain.publish.repository.PublishRepository; -import com.moplus.moplus_server.global.error.exception.BusinessException; -import com.moplus.moplus_server.global.error.exception.ErrorCode; import java.time.LocalDate; import java.util.ArrayList; import java.util.HashSet; @@ -33,9 +31,7 @@ public class ProblemSetGetService { @Transactional(readOnly = true) public ProblemSetGetResponse getProblemSet(Long problemSetId) { ProblemSet problemSet = problemSetRepository.findByIdElseThrow(problemSetId); - if (problemSet.isDeleted()) { - throw new BusinessException(ErrorCode.DELETE_PROBLEM_SET_GET_ERROR); - } + List publishedDates = publishRepository.findByProblemSetId(problemSetId).stream() .map(Publish::getPublishedDate) .toList(); diff --git a/src/main/java/com/moplus/moplus_server/domain/problemset/service/ProblemSetUpdateService.java b/src/main/java/com/moplus/moplus_server/domain/problemset/service/ProblemSetUpdateService.java index 4642d5b7..c9d4fc82 100644 --- a/src/main/java/com/moplus/moplus_server/domain/problemset/service/ProblemSetUpdateService.java +++ b/src/main/java/com/moplus/moplus_server/domain/problemset/service/ProblemSetUpdateService.java @@ -1,15 +1,14 @@ package com.moplus.moplus_server.domain.problemset.service; +import com.moplus.moplus_server.admin.problemset.dto.request.ProblemReorderRequest; +import com.moplus.moplus_server.admin.problemset.dto.request.ProblemSetUpdateRequest; +import com.moplus.moplus_server.admin.publish.domain.Publish; import com.moplus.moplus_server.domain.problem.domain.problem.Problem; import com.moplus.moplus_server.domain.problem.repository.ProblemRepository; import com.moplus.moplus_server.domain.problemset.domain.ProblemSet; import com.moplus.moplus_server.domain.problemset.domain.ProblemSetConfirmStatus; -import com.moplus.moplus_server.admin.problemset.dto.request.ProblemReorderRequest; -import com.moplus.moplus_server.admin.problemset.dto.request.ProblemSetUpdateRequest; import com.moplus.moplus_server.domain.problemset.repository.ProblemSetRepository; -import com.moplus.moplus_server.admin.publish.domain.Publish; import com.moplus.moplus_server.domain.publish.repository.PublishRepository; -import com.moplus.moplus_server.global.error.exception.BusinessException; import com.moplus.moplus_server.global.error.exception.ErrorCode; import com.moplus.moplus_server.global.error.exception.InvalidValueException; import java.util.ArrayList; @@ -39,9 +38,6 @@ public void reorderProblems(Long problemSetId, ProblemReorderRequest request) { @Transactional public void updateProblemSet(Long problemSetId, ProblemSetUpdateRequest request) { ProblemSet problemSet = problemSetRepository.findByIdElseThrow(problemSetId); - if (problemSet.isDeleted()) { - throw new BusinessException(ErrorCode.DELETE_PROBLEM_SET_UPDATE_ERROR); - } if (problemSet.isConfirmed() && problemSet.isProblemsChanged(request.problemIds())) { throw new InvalidValueException(ErrorCode.CONFIRMED_PROBLEM_SET_UPDATE_ERROR); @@ -59,9 +55,7 @@ public void updateProblemSet(Long problemSetId, ProblemSetUpdateRequest request) @Transactional public ProblemSetConfirmStatus toggleConfirmProblemSet(Long problemSetId) { ProblemSet problemSet = problemSetRepository.findByIdElseThrow(problemSetId); - if (problemSet.isDeleted()) { - throw new BusinessException(ErrorCode.DELETE_PROBLEM_SET_TOGGLE_ERROR); - } + List publishes = publishRepository.findByProblemSetId(problemSetId); if (!publishes.isEmpty()) { throw new InvalidValueException(ErrorCode.ALREADY_PUBLISHED_ERROR);