woowacourse-teams / 2024-devel-up

나 혼자만 레벨업? 다 같이 데벨업!
https://www.devel-up.co.kr
22 stars 5 forks source link

Solution Service PR 검증 로직 개선 #433

Closed le2sky closed 1 month ago

le2sky commented 2 months ago

설명

solution service에 존재하는 pr 형식 검사와 존재 미션인지 검사하는 로직을 도메인 레이어로 내리도록 변경합니다. 현재 solution service의 책임이 많아요. 서비스를 분리해볼 수 있으나, 그 이전에 도메인으로 내릴 수 있는 부분은 내려볼려고 해요.

as-is

    private void validatePullRequestUrl(String url) {
        Matcher matcher = PR_URL_PATTERN.matcher(url);
        if (!matcher.matches()) {
            throw new DevelupException(ExceptionType.INVALID_URL);
        }

        String repositoryName = matcher.group(1);
        if (!existsMissionRepositoryName(repositoryName)) {
            throw new DevelupException(ExceptionType.INVALID_URL);
        }
    }

    private boolean existsMissionRepositoryName(String repositoryName) {
        List<String> url = missionRepository.findUrl();
        return url.stream().map(MISSION_URL_PATTERN::matcher)
                .filter(Matcher::find)
                .anyMatch(matcher -> matcher.group(1).equals(repositoryName));
    }

to-be(미정)

    private void validatePullRequestUrl(String url) {
        PullRequest pr =  new PullRequest(url);
        MissionNames missionNames = missionRepository.findAllMissionNames();
        pr.validateExsisMission(missionNames);
    }

작업 목록