Skip to content
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

refactor: startMatch 메서드 수정 및 검증 추가 #488

Merged
merged 3 commits into from
Nov 28, 2024

Conversation

soeunnPark
Copy link
Collaborator

@soeunnPark soeunnPark commented Nov 28, 2024

PR에 대한 설명 🔍

startMatch 메서드의 중복되는 코드를 해결하기 위해 AbstractMatchStrategy 내부로 옮겼습니다. 또한 startMatch 를 하기 위한 조건을 추가했습니다. LeagueAt 전에는 match 를 시작할 수 없습니다.

변경된 사항 📝

  1. FreeSinglesMatchStrategy, TournamentSinglesMatchStrategy의 startMatch 메서드가 동일한 문제를 해결했습니다.
	@Override
	public void startMatch(Long matchId) {
		DoublesMatch doublesMatch = doublesMatchReader.getDoublesMatch(matchId);
		doublesMatch.startMatch();
		doublesMatch.getDoublesSet(1).startSet();
		doublesMatchStore.store(doublesMatch);
	}

해당 메서드를 AbstractSinglesMatchStrategy로 옮겼습니다.
Doubles Match 의 경우에도 동일한 문제가 있어 AbstractSinglesMatchStrategy로 옮겼습니다.

  1. LeagueAt 이전에는 startMatch 메서드를 실행할 수 없도록 검증을 추가했습니다.
	@Override
	public void startMatch(MatchStrategy matchStrategy, Long leagueId, Long matchId) {
		League league = leagueReader.readLeagueById(leagueId);
		if (LocalDateTime.now().isBefore(league.getLeagueAt())) {
			throw new CannotStartMatchException(league.getLeagueId(), league.getLeagueAt());
		}
		matchStrategy.startMatch(matchId);
	}

현재 시간이 LeagueAt 이전이라면 예외를 발생합니다. CannotStartMatchException
에러 메시지는 아래와 같습니다.

"경기 시작 시간 전에는 매치를 시작할 수 없습니다."

PR에서 중점적으로 확인되어야 하는 사항

  • AbstractMatchStrategy 로 잘 옮겨졌는지 확인해주세요.
  • Match Strategy 의 중복 코드를 정리해야 할 것 같습니다.

…chStrategy 내부로 옮겼습니다. 또한 startMatch 를 하기 위한 조건을 추가했습니다. LeagueAt 전에는 match 를 시작할 수 없습니다.
@soeunnPark soeunnPark added 5PM🌝 오후 5시 전까지 리뷰가 필요합니다. refactor✍️ 그냥 수정 labels Nov 28, 2024
@soeunnPark soeunnPark requested a review from a team November 28, 2024 08:49
@soeunnPark soeunnPark self-assigned this Nov 28, 2024
@@ -169,7 +169,7 @@ public CommonResponse<String> startMatch(
StartMatchCommand startMatchCommand =
new StartMatchCommand(clubToken, leagueId, matchId);
MatchOperationHandler matchOperationFacade = matchFacade.getMatchOperationHandler(leagueId);
matchOperationFacade.startMatch(startMatchCommand);
matchOperationFacade.startMatch(leagueId, startMatchCommand);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

startMatchCommand record 안에 leagueId가 있는데 leagueId 를 추가로 넣은 이유가 있나요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Command 안에 leagueId가 있었군요! command 객체 내부에 있는 leagueId를 사용하겠습니다!

public void startMatch(MatchStrategy matchStrategy, Long leagueId, Long matchId) {
League league = leagueReader.readLeagueById(leagueId);
if (LocalDateTime.now().isBefore(league.getLeagueAt())) {
throw new CannotStartMatchException(league.getLeagueId(), league.getLeagueAt());
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Exception의 이름을 리그 시작 시간 전이라는 의미를 가지게 만드는게 좋을 것 같아요! 😄

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

넵 반영해서 수정하겠습니다!

Copy link
Collaborator

@I-migi I-migi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다 😄

@soeunnPark soeunnPark merged commit d84131a into develop Nov 28, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
5PM🌝 오후 5시 전까지 리뷰가 필요합니다. refactor✍️ 그냥 수정
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants