From 96ccb1bebb281b5deeb1bb11d4dd0f2218bba360 Mon Sep 17 00:00:00 2001 From: Youngmyung Kim <83266154+ymkim97@users.noreply.github.com> Date: Sun, 3 Dec 2023 00:06:55 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20Room=20soft=20delete=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20(#226)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: Room soft delete로 변경 * docs: mysql 수정 * fix: checkstyle --- infra/mysql/initdb.d/init.sql | 1 + .../java/com/moabam/api/application/room/RoomService.java | 6 ------ src/main/java/com/moabam/api/domain/room/Participant.java | 1 - src/main/java/com/moabam/api/domain/room/Room.java | 7 +++++++ .../com/moabam/api/presentation/RoomControllerTest.java | 4 ---- 5 files changed, 8 insertions(+), 11 deletions(-) diff --git a/infra/mysql/initdb.d/init.sql b/infra/mysql/initdb.d/init.sql index 9a64249e..aa8bdafa 100644 --- a/infra/mysql/initdb.d/init.sql +++ b/infra/mysql/initdb.d/init.sql @@ -212,6 +212,7 @@ create table room announcement varchar(100), room_image varchar(500), manager_nickname varchar(30), + deleted_at datetime(6), created_at datetime(6) not null, updated_at datetime(6), primary key (id) diff --git a/src/main/java/com/moabam/api/application/room/RoomService.java b/src/main/java/com/moabam/api/application/room/RoomService.java index 48dd9d04..5ad81780 100644 --- a/src/main/java/com/moabam/api/application/room/RoomService.java +++ b/src/main/java/com/moabam/api/application/room/RoomService.java @@ -16,7 +16,6 @@ import com.moabam.api.application.room.mapper.RoomMapper; import com.moabam.api.application.room.mapper.RoutineMapper; import com.moabam.api.domain.member.Member; -import com.moabam.api.domain.room.Certification; import com.moabam.api.domain.room.Participant; import com.moabam.api.domain.room.Room; import com.moabam.api.domain.room.RoomType; @@ -122,11 +121,6 @@ public void exitRoom(Long memberId, Long roomId) { return; } - List routines = routineRepository.findAllByRoomId(roomId); - List certifications = certificationService.findCertifications(routines); - - certificationService.deleteCertifications(certifications); - routineRepository.deleteAll(routines); roomRepository.delete(room); } diff --git a/src/main/java/com/moabam/api/domain/room/Participant.java b/src/main/java/com/moabam/api/domain/room/Participant.java index d6274a4d..0a0d3d02 100644 --- a/src/main/java/com/moabam/api/domain/room/Participant.java +++ b/src/main/java/com/moabam/api/domain/room/Participant.java @@ -76,6 +76,5 @@ public void updateCertifyCount() { public void removeRoom() { this.deletedRoomTitle = this.room.getTitle(); - this.room = null; } } diff --git a/src/main/java/com/moabam/api/domain/room/Room.java b/src/main/java/com/moabam/api/domain/room/Room.java index 00a7ac42..5505b3d7 100644 --- a/src/main/java/com/moabam/api/domain/room/Room.java +++ b/src/main/java/com/moabam/api/domain/room/Room.java @@ -4,7 +4,10 @@ import static com.moabam.global.error.model.ErrorMessage.*; import static java.util.Objects.*; +import java.time.LocalDateTime; + import org.hibernate.annotations.ColumnDefault; +import org.hibernate.annotations.SQLDelete; import com.moabam.global.common.entity.BaseTimeEntity; import com.moabam.global.error.exception.BadRequestException; @@ -26,6 +29,7 @@ @Getter @Table(name = "room") @NoArgsConstructor(access = AccessLevel.PROTECTED) +@SQLDelete(sql = "UPDATE room SET deleted_at = CURRENT_TIMESTAMP where id = ?") public class Room extends BaseTimeEntity { private static final int LEVEL_5 = 5; @@ -85,6 +89,9 @@ public class Room extends BaseTimeEntity { @Column(name = "manager_nickname", length = 30) private String managerNickname; + @Column(name = "deleted_at") + private LocalDateTime deletedAt; + @Builder private Room(Long id, String title, String password, RoomType roomType, int certifyTime, int maxUserCount) { this.id = id; diff --git a/src/test/java/com/moabam/api/presentation/RoomControllerTest.java b/src/test/java/com/moabam/api/presentation/RoomControllerTest.java index dbca7ec2..f4c4fc1d 100644 --- a/src/test/java/com/moabam/api/presentation/RoomControllerTest.java +++ b/src/test/java/com/moabam/api/presentation/RoomControllerTest.java @@ -709,12 +709,8 @@ void manager_delete_room_success() throws Exception { .andExpect(status().isOk()) .andDo(print()); - List deletedRoom = roomRepository.findAll(); - List deletedRoutine = routineRepository.findAll(); List deletedParticipant = participantRepository.findAll(); - assertThat(deletedRoom).isEmpty(); - assertThat(deletedRoutine).hasSize(0); assertThat(deletedParticipant).hasSize(1); assertThat(deletedParticipant.get(0).getDeletedAt()).isNotNull(); assertThat(deletedParticipant.get(0).getDeletedRoomTitle()).isNotNull();