aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting/ProjectAlmSettingQuery.java
diff options
context:
space:
mode:
authorJulien Camus <julien.camus@sonarsource.com>2025-07-08 18:29:14 +0200
committersonartech <sonartech@sonarsource.com>2025-07-08 20:03:57 +0000
commit051dd8000d1156e2d25fb949e427a0de2f8475d2 (patch)
tree9b1b81fd7a9b7dbc5400b16a00d1db33dc21f01e /server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting/ProjectAlmSettingQuery.java
parent75b9fb6dd9edee86d61511256437f062beefe3e5 (diff)
downloadsonarqube-master.tar.gz
sonarqube-master.zip
SONAR-25454 Implement repository URL-based project bindings fuzzy searchHEADmaster
Diffstat (limited to 'server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting/ProjectAlmSettingQuery.java')
-rw-r--r--server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting/ProjectAlmSettingQuery.java71
1 files changed, 69 insertions, 2 deletions
diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting/ProjectAlmSettingQuery.java b/server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting/ProjectAlmSettingQuery.java
index ea3d8fd1b47..54c7f6621f5 100644
--- a/server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting/ProjectAlmSettingQuery.java
+++ b/server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting/ProjectAlmSettingQuery.java
@@ -21,6 +21,73 @@ package org.sonar.db.alm.setting;
import javax.annotation.Nullable;
-public record ProjectAlmSettingQuery(@Nullable String repository, @Nullable String almSettingUuid
-) {
+public record ProjectAlmSettingQuery(
+ @Nullable String repository,
+ @Nullable String almSettingUuid,
+ @Nullable String almRepo,
+ @Nullable String almSlug) {
+
+ // Existing constructor for backward compatibility (repository search in both alm_repo and alm_slug)
+ public ProjectAlmSettingQuery(String repository, String almSettingUuid) {
+ this(repository, almSettingUuid, null, null);
+ }
+
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public static class Builder {
+ private String repository;
+ private String almSettingUuid;
+ private String almRepo;
+ private String almSlug;
+
+ private Builder() {
+ }
+
+ public Builder repository(String repository) {
+ if (almRepo != null || almSlug != null) {
+ throw new IllegalStateException("Cannot use repository with almRepo or almSlug");
+ }
+ this.repository = repository;
+ return this;
+ }
+
+ public Builder almSettingUuid(String almSettingUuid) {
+ if (almRepo != null || almSlug != null) {
+ throw new IllegalStateException("Cannot use almSettingUuid with almRepo or almSlug");
+ }
+ this.almSettingUuid = almSettingUuid;
+ return this;
+ }
+
+ public Builder almRepo(String almRepo) {
+ if (repository != null || almSettingUuid != null) {
+ throw new IllegalStateException("Cannot use almRepo with repository or almSettingUuid");
+ }
+ this.almRepo = almRepo;
+ return this;
+ }
+
+ public Builder almSlug(String almSlug) {
+ if (repository != null || almSettingUuid != null) {
+ throw new IllegalStateException("Cannot use almSlug with repository or almSettingUuid");
+ }
+ this.almSlug = almSlug;
+ return this;
+ }
+
+ public ProjectAlmSettingQuery build() {
+ return new ProjectAlmSettingQuery(repository, almSettingUuid, almRepo, almSlug);
+ }
+ }
+
+ public static ProjectAlmSettingQuery forAlmRepo(String almRepo) {
+ return builder().almRepo(almRepo).build();
+ }
+
+ public static ProjectAlmSettingQuery forAlmRepoAndSlug(String almRepo, String almSlug) {
+ return builder().almRepo(almRepo).almSlug(almSlug).build();
+ }
+
}