Skip to content

Commit b0b78b6

Browse files
committed
refactor: handle 트랜잭션 제거 및 SessionPersistenceService 분리
1 parent 34e18f5 commit b0b78b6

2 files changed

Lines changed: 30 additions & 8 deletions

File tree

src/main/java/io/wisoft/prepair/prepair_api/interview/answer/event/AllAnalysisCompletedHandler.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,13 @@
1313
import io.wisoft.prepair.prepair_api.interview.question.entity.InterviewQuestion;
1414
import io.wisoft.prepair.prepair_api.interview.question.repository.QuestionRepository;
1515
import io.wisoft.prepair.prepair_api.interview.session.entity.InterviewSession;
16-
import io.wisoft.prepair.prepair_api.interview.session.repository.SessionRepository;
16+
import io.wisoft.prepair.prepair_api.interview.session.service.SessionPersistenceService;
1717
import io.wisoft.prepair.prepair_api.common.support.SseEmitterManager;
1818
import lombok.RequiredArgsConstructor;
1919
import lombok.extern.slf4j.Slf4j;
2020
import org.springframework.context.event.EventListener;
2121
import org.springframework.scheduling.annotation.Async;
2222
import org.springframework.stereotype.Component;
23-
import org.springframework.transaction.annotation.Transactional;
2423

2524
import java.io.IOException;
2625
import java.nio.file.Files;
@@ -42,12 +41,11 @@ public class AllAnalysisCompletedHandler {
4241
private final AnswerPersistenceService answerPersistenceService;
4342
private final AnswerRepository answerRepository;
4443
private final QuestionRepository questionRepository;
45-
private final SessionRepository sessionRepository;
44+
private final SessionPersistenceService sessionPersistenceService;
4645
private final SseEmitterManager sseEmitterManager;
4746

4847
@Async("videoTaskExecutor")
4948
@EventListener
50-
@Transactional
5149
public void handle(AllAnalysisCompletedEvent event) {
5250
UUID answerId = event.answerId();
5351
deleteTempFile(event.videoPath());
@@ -201,8 +199,7 @@ private FinalFeedbackData buildFinalData(
201199
private void completeSession(InterviewSession session, FinalFeedbackData data, FinalFeedbackResult finalResult) {
202200
UUID sessionId = session.getId();
203201

204-
session.complete(data.finalScore(), finalResult.finalFeedback());
205-
sessionRepository.save(session);
202+
sessionPersistenceService.saveCompletedSession(session, data.finalScore(), finalResult.finalFeedback());
206203

207204
FinalFeedbackResponse response = new FinalFeedbackResponse(
208205
sessionId,
@@ -222,8 +219,7 @@ private void failSession(UUID answerId, String message) {
222219
if (answer == null || answer.getInterviewQuestion().getInterviewSession() == null) return;
223220

224221
InterviewSession session = answer.getInterviewQuestion().getInterviewSession();
225-
session.fail();
226-
sessionRepository.save(session);
222+
sessionPersistenceService.saveFailedSession(session);
227223

228224
sseEmitterManager.send(session.getId(), "analysis-failed", Map.of("message", message));
229225
sseEmitterManager.complete(session.getId());
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package io.wisoft.prepair.prepair_api.interview.session.service;
2+
3+
import io.wisoft.prepair.prepair_api.interview.session.entity.InterviewSession;
4+
import io.wisoft.prepair.prepair_api.interview.session.repository.SessionRepository;
5+
import lombok.RequiredArgsConstructor;
6+
import org.springframework.stereotype.Service;
7+
import org.springframework.transaction.annotation.Transactional;
8+
9+
@Service
10+
@RequiredArgsConstructor
11+
public class SessionPersistenceService {
12+
13+
private final SessionRepository sessionRepository;
14+
15+
@Transactional
16+
public void saveCompletedSession(InterviewSession session, int finalScore, String finalFeedback) {
17+
session.complete(finalScore, finalFeedback);
18+
sessionRepository.save(session);
19+
}
20+
21+
@Transactional
22+
public void saveFailedSession(InterviewSession session) {
23+
session.fail();
24+
sessionRepository.save(session);
25+
}
26+
}

0 commit comments

Comments
 (0)