Skip to content

Commit 7c4cdde

Browse files
authored
Merge pull request #189 from SSASINSA/feature/184_metrics_eventapproval_nplus1
[Refactor]이벤트 승인요청 단방향 전환(#184)
2 parents cb1b3d0 + 1256617 commit 7c4cdde

5 files changed

Lines changed: 9 additions & 16 deletions

File tree

src/main/java/com/ssasinsa/wearagain/domain/event/entity/Event.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
import jakarta.persistence.JoinColumn;
1515
import jakarta.persistence.ManyToOne;
1616
import jakarta.persistence.OneToMany;
17-
import jakarta.persistence.OneToOne;
1817
import jakarta.persistence.Table;
1918
import java.time.LocalDate;
2019
import java.time.LocalDateTime;
@@ -81,9 +80,6 @@ public class Event extends BaseTimeEntity {
8180
@BatchSize(size = 50)
8281
private List<EventImage> images = new ArrayList<>();
8382

84-
@OneToOne(mappedBy = "event", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
85-
private EventApprovalRequest approvalRequest;
86-
8783
@Column(name = "usage_guide", columnDefinition = "TEXT")
8884
private String usageGuide;
8985

src/main/java/com/ssasinsa/wearagain/domain/event/repository/EventApprovalRequestRepository.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import com.ssasinsa.wearagain.domain.event.entity.EventStatus;
55
import java.time.LocalDate;
66
import java.util.List;
7+
import java.util.Optional;
8+
79
import org.springframework.data.jpa.repository.JpaRepository;
810
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
911
import org.springframework.data.jpa.repository.Query;
@@ -16,6 +18,8 @@ public interface EventApprovalRequestRepository extends JpaRepository<EventAppro
1618

1719
List<EventApprovalRequest> findByEvent_StatusAndProcessedAtIsNullOrderByCreatedAtDesc(EventStatus status);
1820

21+
Optional<EventApprovalRequest> findByEvent_Id(Long eventId);
22+
1923
@Query("""
2024
select request from EventApprovalRequest request
2125
where request.processedAt is null

src/main/java/com/ssasinsa/wearagain/domain/event/repository/EventRepository.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,21 +50,13 @@ List<Event> findApprovedEventsToOpen(
5050
select distinct e
5151
from Event e
5252
left join fetch e.organizerAdmin oa
53-
left join fetch e.approvalRequest ar
54-
left join fetch ar.requestingAdmin
55-
left join fetch ar.processedByAdmin
5653
left join fetch e.options o1
5754
where e.id = :id
5855
""")
5956
Optional<Event> findWithDetailsById(@Param("id") Long id);
6057

6158
@Override
62-
@EntityGraph(attributePaths = {
63-
"organizerAdmin",
64-
"approvalRequest",
65-
"approvalRequest.requestingAdmin",
66-
"approvalRequest.processedByAdmin"
67-
})
59+
@EntityGraph(attributePaths = {"organizerAdmin"})
6860
Page<Event> findAll(Specification<Event> spec, Pageable pageable);
6961

7062
long countByStatusIn(Collection<EventStatus> statuses);

src/main/java/com/ssasinsa/wearagain/domain/event/service/EventAdminServiceImpl.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -774,7 +774,8 @@ private void resetApprovalRequest(Event event) {
774774
if (event.getStatus() != EventStatus.DRAFT) {
775775
event.changeStatus(EventStatus.DRAFT);
776776
}
777-
EventApprovalRequest approvalRequest = event.getApprovalRequest();
777+
EventApprovalRequest approvalRequest = eventApprovalRequestRepository.findByEvent_Id(event.getId())
778+
.orElse(null);
778779
if (approvalRequest == null) {
779780
EventApprovalRequest newRequest = EventApprovalRequest.create(event, organizer);
780781
eventApprovalRequestRepository.save(newRequest);
@@ -1077,7 +1078,7 @@ public MessageResponse approveApprovalRequest(Long approvalRequestId, Long admin
10771078
AdminUser admin = adminUserRepository.findById(adminId)
10781079
.orElseThrow(() -> new EventException(EventErrorCode.EVENT_NOT_FOUND));
10791080

1080-
if (admin.getRole() != AdminRole.SUPER_ADMIN) {
1081+
if (admin.getRole() == AdminRole.MANAGER) {
10811082
throw new EventException(EventErrorCode.EVENT_STATUS_UPDATE_FORBIDDEN);
10821083
}
10831084

src/test/java/com/ssasinsa/wearagain/domain/event/service/EventAdminServiceImplTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -554,7 +554,7 @@ void should_reset_existing_approval_request_when_manager_updates_event() {
554554
AdminUser reviewer = AdminUser.createSuperAdmin("reviewer@wearagain.kr", "encoded", "검토 관리자");
555555
ReflectionTestUtils.setField(reviewer, "id", 55L);
556556
approvalRequest.approve(reviewer, LocalDateTime.now().minusDays(1), EventStatus.OPEN);
557-
ReflectionTestUtils.setField(event, "approvalRequest", approvalRequest);
557+
when(eventApprovalRequestRepository.findByEvent_Id(101L)).thenReturn(java.util.Optional.of(approvalRequest));
558558

559559
EventAdminUpdateRequest request = new EventAdminUpdateRequest(
560560
"매니저 수정",

0 commit comments

Comments
 (0)