Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ public static class ApplicationDetailDTO {
@Schema(description = "적용사항 ID", example = "1")
private Long applicationId;

@Schema(description = "회의 ID", example = "1")
private Long meetingId;

@Schema(description = "적용사항 명", example = "Redis키 정책 변경")
private String name;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ public ApplicationResponse.ApplicationDetailDTO getApplicationDetail(Long applic

return ApplicationResponse.ApplicationDetailDTO.builder()
.applicationId(application.getId())
.meetingId(application.getDecision().getMeeting().getId())
.name(application.getName())
.decisionReasons(toDecisionReasonItems(applicationBases))
.decisionTimelines(toDecisionTimelineItems(applicationTimelines))
Expand Down
10 changes: 9 additions & 1 deletion src/main/java/com/whylog/server/domain/git/entity/Commit.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,15 @@

@Entity
@Getter
@Table(name = "Commits")
@Table(
name = "Commits",
uniqueConstraints = {
@UniqueConstraint(
name = "uk_commits_repository_hash",
columnNames = {"repository_id", "hash"}
)
}
)
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Commit extends BaseEntity {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,15 @@ Set<String> findExistingHashes(
""")
List<Commit> findAllWithRepositoryByIdIn(@Param("commitIds") List<Long> commitIds);

@Query("""
SELECT c
FROM Commit c
LEFT JOIN c.commitAnalysis ca
WHERE c.repository.id = :repositoryId
AND ca.id IS NULL
""")
List<Commit> findUnanalyzedCommitsByRepositoryId(@Param("repositoryId") Long repositoryId);

@Query("""
SELECT c.id
FROM Commit c
Expand Down Expand Up @@ -68,4 +77,3 @@ Slice<Commit> findCommitsWithCursor(
Pageable pageable
);
}

Original file line number Diff line number Diff line change
Expand Up @@ -220,14 +220,17 @@ private void syncCommits(GHRepository ghRepository, Repository repository, Local

List<String> allHashes = allGitHubCommits.stream()
.map(GHCommit::getSHA1)
.distinct()
.toList();

Set<String> existingHashes = allHashes.isEmpty()
? Collections.emptySet()
: commitRepository.findExistingHashes(repository.getId(), allHashes);

Set<String> syncTargetHashes = new HashSet<>();
List<Commit> newCommits = allGitHubCommits.stream()
.filter(ghCommit -> !existingHashes.contains(ghCommit.getSHA1()))
.filter(ghCommit -> syncTargetHashes.add(ghCommit.getSHA1()))
.map(ghCommit -> {
try {
var shortInfo = ghCommit.getCommitShortInfo();
Expand Down Expand Up @@ -261,13 +264,28 @@ private void syncCommits(GHRepository ghRepository, Repository repository, Local
.filter(Objects::nonNull)
.toList();

List<Commit> savedCommits = new ArrayList<>();
if (!newCommits.isEmpty()) {
List<Commit> savedCommits = commitRepository.saveAllAndFlush(newCommits);
triggerCommitAnalyzeRunsAfterCommit(ghRepository, repository, savedCommits);
log.info("새로운 커밋 {}개 동기화 완료: {}", newCommits.size(), ghRepository.getFullName());
savedCommits = commitRepository.saveAllAndFlush(newCommits);
log.info("새로운 커밋 {}개 동기화 완료: {}", savedCommits.size(), ghRepository.getFullName());
} else {
log.info("새로 동기화할 커밋이 없습니다: {}", ghRepository.getFullName());
}

List<Commit> unanalyzedCommits = commitRepository.findUnanalyzedCommitsByRepositoryId(repository.getId());
List<Commit> analyzeTargets = mergeAnalyzeTargets(savedCommits, unanalyzedCommits);

if (!analyzeTargets.isEmpty()) {
triggerCommitAnalyzeRunsAfterCommit(ghRepository, repository, analyzeTargets);
log.info("커밋 분석 요청 대상 {}개 확인: {}", analyzeTargets.size(), ghRepository.getFullName());
}
}

private List<Commit> mergeAnalyzeTargets(List<Commit> savedCommits, List<Commit> unanalyzedCommits) {
Map<Long, Commit> analyzeTargets = new LinkedHashMap<>();
savedCommits.forEach(commit -> analyzeTargets.put(commit.getId(), commit));
unanalyzedCommits.forEach(commit -> analyzeTargets.putIfAbsent(commit.getId(), commit));
return new ArrayList<>(analyzeTargets.values());
}

/**
Expand Down
Loading