diff --git a/server/src/main/java/com/openelements/benchscape/server/store/endpoints/MeasurementEndpoint.java b/server/src/main/java/com/openelements/benchscape/server/store/endpoints/MeasurementEndpoint.java index a93fb10..45dceb4 100644 --- a/server/src/main/java/com/openelements/benchscape/server/store/endpoints/MeasurementEndpoint.java +++ b/server/src/main/java/com/openelements/benchscape/server/store/endpoints/MeasurementEndpoint.java @@ -21,11 +21,7 @@ import java.util.Optional; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.format.annotation.DateTimeFormat; -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @CrossOrigin @RestController @@ -123,4 +119,10 @@ List findByQuery(@RequestParam final String benchmarkId, return measurements; } } + + @GetMapping("/{benchmarkId}/branches") + public List getGitBranchesForBenchmark(@PathVariable String benchmarkId) { + return measurementService.getBranchesForBenchmark(benchmarkId); + } } + diff --git a/server/src/main/java/com/openelements/benchscape/server/store/repositories/MeasurementRepository.java b/server/src/main/java/com/openelements/benchscape/server/store/repositories/MeasurementRepository.java index 958a942..83ce266 100644 --- a/server/src/main/java/com/openelements/benchscape/server/store/repositories/MeasurementRepository.java +++ b/server/src/main/java/com/openelements/benchscape/server/store/repositories/MeasurementRepository.java @@ -41,4 +41,8 @@ public interface MeasurementRepository extends EntityWithTenantRepository findLast(final UUID benchmarkId); + + @NonNull + @Query("SELECT DISTINCT m.metadata.gitBranch FROM Measurement m WHERE m.benchmarkId = ?1") + List findDistinctBranchesByBenchmarkId(UUID benchmarkId); } diff --git a/server/src/main/java/com/openelements/benchscape/server/store/services/MeasurementService.java b/server/src/main/java/com/openelements/benchscape/server/store/services/MeasurementService.java index 1e04c61..db79cd6 100644 --- a/server/src/main/java/com/openelements/benchscape/server/store/services/MeasurementService.java +++ b/server/src/main/java/com/openelements/benchscape/server/store/services/MeasurementService.java @@ -186,4 +186,10 @@ public DateTimePeriode getPeriode(@NonNull final UUID benchmarkId) { .orElseThrow(() -> new IllegalArgumentException("No measurement for benchmark " + benchmarkId)); return DateTimePeriode.between(start, end); } + + @NonNull + public List getBranchesForBenchmark(@NonNull final String benchmarkId) { + Objects.requireNonNull(benchmarkId, "benchmarkId must not be null"); + return measurementRepository.findDistinctBranchesByBenchmarkId(UUID.fromString(benchmarkId)); + } }