diff --git a/src/main/java/org/runnect/server/publicCourse/service/PublicCourseService.java b/src/main/java/org/runnect/server/publicCourse/service/PublicCourseService.java index d96199f..9b2d934 100644 --- a/src/main/java/org/runnect/server/publicCourse/service/PublicCourseService.java +++ b/src/main/java/org/runnect/server/publicCourse/service/PublicCourseService.java @@ -14,6 +14,7 @@ import org.runnect.server.common.module.convert.CoordinatePathConverter; import org.runnect.server.course.entity.Course; import org.runnect.server.course.repository.CourseRepository; +import org.runnect.server.record.repository.RecordRepository; import org.runnect.server.publicCourse.dto.request.CreatePublicCourseRequestDto; import org.runnect.server.publicCourse.dto.request.DeletePublicCoursesRequestDto; import org.runnect.server.publicCourse.dto.response.CreatePublicCourseResponseDto; @@ -53,6 +54,7 @@ public class PublicCourseService { private final UserRepository userRepository; private final ScrapRepository scrapRepository; private final CourseRepository courseRepository; + private final RecordRepository recordRepository; @Value("${runnect.marathon-public-course-id}") @@ -364,6 +366,9 @@ public DeletePublicCoursesResponseDto deletePublicCourses( //삭제전 연관된 스크랩 먼저 삭제 scrapRepository.deleteByPublicCourseIn(publicCourses); + //삭제전 연관된 Record의 publicCourse FK null 처리 + recordRepository.nullifyPublicCourseIn(publicCourses); + //삭제전 course의 isPrivate update publicCourses.forEach(publicCourse -> publicCourse.getCourse().retrieveCourse()); diff --git a/src/main/java/org/runnect/server/record/repository/RecordRepository.java b/src/main/java/org/runnect/server/record/repository/RecordRepository.java index fe2c80f..5d09675 100644 --- a/src/main/java/org/runnect/server/record/repository/RecordRepository.java +++ b/src/main/java/org/runnect/server/record/repository/RecordRepository.java @@ -1,8 +1,10 @@ package org.runnect.server.record.repository; import java.util.Collection; +import org.runnect.server.publicCourse.entity.PublicCourse; import org.runnect.server.record.entity.Record; import org.runnect.server.user.entity.RunnectUser; +import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.Repository; import org.springframework.data.repository.query.Param; @@ -29,4 +31,8 @@ public interface RecordRepository extends Repository { // DELETE long deleteByIdIn(Collection ids); + + @Modifying + @Query("UPDATE Record r SET r.publicCourse = null WHERE r.publicCourse IN :publicCourses") + int nullifyPublicCourseIn(@Param("publicCourses") Collection publicCourses); }