-
GITHUB API를 활용한 커밋 기록 조회 (3) 커밋카운트 로직 적용devRace 2024. 11. 13. 17:18
private long totalCommits; private long monthlyCommits; private long weeklyCommits; private long dailyCommits;
전체 기간 커밋갯수
현재 월간 커밋 갯수
현재 주간 커밋 갯수
오늘 커밋 갯수를 저장하는 엔티티 컬럼을 작성하였다.
간단히 오늘 커밋 갯수를 저장하는 로직만 표시해보겠다.
private long getCommitCountFromGithub(String githubName, ZonedDateTime fromDate, ZonedDateTime toDate) { try { return githubApiClient.getCommitCountInperiod(githubName, fromDate, toDate); } catch (Exception e) { throw new CustomException(ErrorCode.FAIL_TO_CONNECT_GITHUB); } }
먼저 깃허브 api를 사용하여 커밋수를 가져온다
/** * 커밋 갱신 깃허브로부터 정보를 받아와서 갱신 * <p> * 커밋이 없는 경우 null 반환을 방지하며, 새로운 커밋 객체를 생성하여 커밋 수 0으로 설정 */ private void updateCommit(User user, ZonedDateTime toDate, long newCommits) { Commit commit = commitRepository.findByUserAndCommitDate(user, toDate) .orElse(new Commit(null, toDate, 0, user)); commit.addCommit(commit.getCommitCount() + newCommits); commitRepository.save(commit); }
그리고 커밋을 갱신할때는 위와 같은 코드를 사용한다.
private boolean isNewDay(ZonedDateTime recentlyUpdateTime, ZonedDateTime toDate) { return !recentlyUpdateTime.truncatedTo(ChronoUnit.DAYS) .equals(toDate.truncatedTo(ChronoUnit.DAYS)); } private void updateDailyCommits(ZonedDateTime toDate, long newCommits, CommitCount commitCount) { commitCount.updateDailyCommits(newCommits, isNewDay(commitCount.getRecentlyUpdateTime(), toDate)); }
날짜가 바뀌지 않은 경우엔 기존의 커밋카운트에 새 커밋카운트를 더하고
날짜가 바뀐 경우엔 새로운 커밋카운트를 저장한다.
이를 통해 매일 깃허브에서 커밋한 갯수를 저장할 수 있다.
'devRace' 카테고리의 다른 글
Commit Count 확장 - 로그(TIL) 카운트 EventListener Error (0) 2024.11.26 GITHUB API를 활용한 커밋 기록 조회 (4) 커밋 히스토리 로직 구현 (1) 2024.11.14 GITHUB API를 활용한 커밋 기록 조회 (2) GithubApiClient 작성 (0) 2024.11.12 GITHUB API를 활용한 커밋 기록 조회 (1) 깃허브 API 적용 (0) 2024.11.11