From d28014531379a7de4e048ea43677190a6c0c9f19 Mon Sep 17 00:00:00 2001 From: Manish Dait Date: Thu, 24 Oct 2024 19:51:26 +0530 Subject: [PATCH] added config for excluding specific issues --- .../issues/config/RepositoryProperty.java | 4 +++- .../openelements/issues/services/GitHubCache.java | 13 +++++++------ .../openelements/issues/services/GitHubClient.java | 7 +++++-- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/openelements/issues/config/RepositoryProperty.java b/src/main/java/com/openelements/issues/config/RepositoryProperty.java index f36de24..002062e 100644 --- a/src/main/java/com/openelements/issues/config/RepositoryProperty.java +++ b/src/main/java/com/openelements/issues/config/RepositoryProperty.java @@ -1,9 +1,11 @@ package com.openelements.issues.config; +import java.util.List; import java.util.Objects; import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; -public record RepositoryProperty(@NonNull String org, @NonNull String repo) { +public record RepositoryProperty(@NonNull String org, @NonNull String repo, @Nullable List excludeIdentifiers) { public RepositoryProperty { Objects.requireNonNull(org, "org must not be null"); diff --git a/src/main/java/com/openelements/issues/services/GitHubCache.java b/src/main/java/com/openelements/issues/services/GitHubCache.java index a5abab9..f2af434 100644 --- a/src/main/java/com/openelements/issues/services/GitHubCache.java +++ b/src/main/java/com/openelements/issues/services/GitHubCache.java @@ -20,6 +20,7 @@ import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.springframework.stereotype.Service; @@ -47,10 +48,10 @@ public GitHubCache(@NonNull final IssueServiceProperties properties, final GitHu log.info("Updating cache"); final List repos = properties.getRepositories(); repos.forEach(repo -> updateContributors(repo.org(), repo.repo())); - repos.forEach(repo -> updateIssues(repo.org(), repo.repo(), GOOD_FIRST_ISSUE_LABEL)); - repos.forEach(repo -> updateIssues(repo.org(), repo.repo(), GOOD_FIRST_ISSUE_CANDIDATE_LABEL)); - repos.forEach(repo -> updateIssues(repo.org(), repo.repo(), HACKTOBERFEST_LABEL)); - repos.forEach(repo -> updateIssues(repo.org(), repo.repo(), HELP_WANTED_LABEL)); + repos.forEach(repo -> updateIssues(repo.org(), repo.repo(), repo.excludeIdentifiers(), GOOD_FIRST_ISSUE_LABEL)); + repos.forEach(repo -> updateIssues(repo.org(), repo.repo(), repo.excludeIdentifiers(), GOOD_FIRST_ISSUE_CANDIDATE_LABEL)); + repos.forEach(repo -> updateIssues(repo.org(), repo.repo(),repo.excludeIdentifiers(), HACKTOBERFEST_LABEL)); + repos.forEach(repo -> updateIssues(repo.org(), repo.repo(), repo.excludeIdentifiers(), HELP_WANTED_LABEL)); log.info("Cache updated. Found {} contributors and {} issues", getContributors().size(), getAllIssues().size()); } catch (final Exception e) { log.error("Failed to update cache", e); @@ -70,11 +71,11 @@ private void updateContributors(@NonNull final String org, @NonNull final String } } - private void updateIssues(@NonNull final String org, @NonNull final String repo, @NonNull final String label) { + private void updateIssues(@NonNull final String org, @NonNull final String repo, @Nullable List excludedIdentifiers, @NonNull final String label) { try { log.info("Updating issues cache for repo '{}/{}' with label '{}'", org, repo, label); final Repository repository = gitHubClient.getRepository(org, repo); - final List issues = gitHubClient.getIssues(repository, label); + final List issues = gitHubClient.getIssues(repository, label, excludedIdentifiers); log.info("Found {} issues for repo '{}/{}' with label '{}'", issues.size(), org, repo, label); this.issuesCache.put(hash(org, repo, label), issues); } catch (final Exception e) { diff --git a/src/main/java/com/openelements/issues/services/GitHubClient.java b/src/main/java/com/openelements/issues/services/GitHubClient.java index 39edce7..9ae977a 100644 --- a/src/main/java/com/openelements/issues/services/GitHubClient.java +++ b/src/main/java/com/openelements/issues/services/GitHubClient.java @@ -10,6 +10,7 @@ import java.util.List; import java.util.Objects; import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.ResponseEntity; @@ -95,7 +96,7 @@ public Repository getRepository(@NonNull final String org, @NonNull final String return new Repository(org, repo, imageUrl, languageTags); } - public List getIssues(@NonNull final Repository repository, @NonNull final String label) { + public List getIssues(@NonNull final Repository repository, @NonNull final String label, @Nullable List excludedIdentifiers) { Objects.requireNonNull(repository, "repository must not be null"); Objects.requireNonNull(label, "label must not be null"); final List issues = new ArrayList<>(); @@ -161,7 +162,9 @@ public List getIssues(@NonNull final Repository repository, @NonNull fina final Issue issue = new Issue(title, Integer.valueOf(number).toString(), repository, url, isAssigned, isClosed, labels); - issues.add(issue); + if (excludedIdentifiers == null || !excludedIdentifiers.contains(issue.identifier())) { + issues.add(issue); + } }); return Collections.unmodifiableList(issues); }