-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BE] 매칭 완료 알람 기능 구현(#761) #768
Conversation
Test Results 65 files 65 suites 7s ⏱️ Results for commit f4eec6b. ♻️ This comment has been updated with latest results. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
새로운 알람이 생기면서 인터페이스로 분리 고생하셨네요!
궁금한 점이 있어 코멘트 달아두었습니다.
기능적으로 괜찮은 것 같아 approve 합니다!
} | ||
|
||
public static AlarmResponse of(ServerToUserAlarm alarm, Room room) { | ||
return new AlarmResponse(alarm.getId(), alarm.getActionType(), null, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
if (alarm instanceof UserToUserAlarm userAlarm) { | ||
return AlarmResponse.of(userAlarm, members.get(userAlarm.getActorId()), userAlarmRooms.get(userAlarm.getInteractionId())); | ||
} | ||
if (alarm instanceof ServerToUserAlarm serverAlarm){ | ||
return AlarmResponse.of(serverAlarm, serverAlarmRooms.get(serverAlarm.getInteractionId())); | ||
} | ||
throw new CoreaException(ExceptionType.UNDEFINED_ALARM_TYPE); | ||
}) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
instanceof 를 이용하여 외부에서 타입을 검사하는 것 대신,
Alarm 객체가 isUserToUser 과 같은 메서드를 가지는건 어떻게 생각하세요?
둘 다 종류가 많아질수록 길어지는 건 매한가지 일 것 같긴한데, 지금 타입이 2개밖에 없는 상황에서 type 을 정의하는 Enum 으로 분리하는 것도 과한작업 같다고 느껴지긴하네요.
} | ||
|
||
private List<Alarm> mergeAlarms(AlarmsByActionType userAlarms, AlarmsByActionType serverAlarms) { | ||
return Stream.concat( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
stream.concat 을 하면, 두 스트림이 순서대로 합쳐지는 거로 알고 있는데,
그럼 유저알람이 먼저 보이고 아래에 서버알람이 보이게 될 것 같아요.
혹시 시간 순으로 정렬은 어떤가요?
근데 할꺼면 모든 알람 객체들에게 생성 시간이 들어가야해서 쉽지 않겠네요,, 다른 분들 의견도 궁금하네요
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
수고하셨씁니당~~! 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
애쉬 구두로 말한대로
실제 올리고 QA 하는 방안도 괜찮을 거 같아요.
TransactionTemplate
때문인지 코드가 조금 꼬인거 같아서 당장 테스트하기 어려우면 미뤄도 될듯용 🙂
} | ||
|
||
@Override | ||
public boolean isStatus(boolean status) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
isRead 대신 isStatus 를 한 이유가 있나요?
📌 관련 이슈
✨ PR 세부 내용
스케줄러에 등록된 매칭이 완료되면 결과에 해당하는 알람을 생성합니다.
MATCH_COMPLETE
MATCH_FAIL
P2
MatchingExecutorTest
마지막 테스트가 자꾸 깨지는데(제가 추가했어요)아무래도 트랜잭션 문제 같아요... 🤔 근데 몇 시간 고민해도 해결책을 잘 모르겠네요
집단 지성을 구하고 싶어 일단
@Disabled
해두고 PR 올렸습니다. 백엔드 분들 도움요.P4
현재
user
->user
로 가는 알람과 달리 매칭 완료 로직은server
->user
로 가는 알람입니다.따라서
Alarm
인터페이스를 사용하고 두 가지의 알람 도메인을 해당 인터페이스의 구현체로 만들었는데요.생각보다 기존 로직에 손댄 부분이 조금 있어서 이 부분도 잘 작성된 게 맞는지? 잘 돌아가는지? 함께 확인해주시면 감사하겠습니다.
우선 테스트는 다 돌아감.
P4
매칭 로직이 스케줄러에 의존하고 있다보니 알람 생성을 어느 단에서 해야할지 조금 고민했습니다.
MatchingExecutor
가 다른 서비스들을 의존하고 있는 클래스길래 얘가 알람 서비스도 사용하도록 짜봤어요.그런데 정확히 저 부분에 들어가는 게 맞는지는 조금 아리까리하네요.
P2
질문과 함께 봐주시면 감사합니다.