Skip to content

Commit

Permalink
Use List of ReleaseType as parameter
Browse files Browse the repository at this point in the history
  • Loading branch information
xavierfacq committed Oct 18, 2023
1 parent 5a44a25 commit 932606f
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -68,14 +68,13 @@ class DownloadStatsResource {
@Parameter(name = "feature_version", description = "Feature version (i.e 8, 9, 10...)", required = true)
@PathParam("feature_version")
featureVersion: Int,
@Parameter(name = "release_type", description = "Release type (i.e all, ga, ea)", required = false)
@PathParam("release_type")
releaseType: ReleaseType = ReleaseType.ga
@Parameter(name = "release_types", description = "List of release types to include in computation (i.e &release_types=ga,ea)", required = false)
@QueryParam("release_types") releaseTypes: List<ReleaseType> = listOf(ReleaseType.ga)
): Map<String, Long> {
val release = apiDataStore.getAdoptRepos().getFeatureRelease(featureVersion)
?: throw BadRequestException("Unable to find version $featureVersion")

return getAdoptReleases(release, releaseType, null)
return getAdoptReleases(release, releaseTypes, null)
.map { grouped ->
Pair(
grouped.release_name,
Expand All @@ -99,14 +98,13 @@ class DownloadStatsResource {
@Parameter(name = "release_name", description = "Release Name i.e jdk-11.0.4+11", required = true)
@PathParam("release_name")
releaseName: String,
@Parameter(name = "release_type", description = "Release type (i.e all, ga, ea)", required = false)
@PathParam("release_type")
releaseType: ReleaseType = ReleaseType.ga
@Parameter(name = "release_types", description = "List of release types to include in computation (i.e &release_types=ga,ea)", required = false)
@QueryParam("release_types") releaseTypes: List<ReleaseType> = listOf(ReleaseType.ga)
): Map<String, Long> {
val release = apiDataStore.getAdoptRepos().getFeatureRelease(featureVersion)
?: throw BadRequestException("Unable to find version $featureVersion")

return getAdoptReleases(release, releaseType, releaseName)
return getAdoptReleases(release, releaseTypes, releaseName)
.flatMap { it.binaries.asSequence() }
.flatMap {
val archive = Pair(it.`package`.name, it.download_count)
Expand All @@ -119,13 +117,13 @@ class DownloadStatsResource {
.toMap()
}

private fun getAdoptReleases(release: FeatureRelease, releaseType: ReleaseType, releaseName: String?): Sequence<Release> {
private fun getAdoptReleases(release: FeatureRelease, releaseTypes: List<ReleaseType>, releaseName: String?): Sequence<Release> {
var releases = release
.releases
.getReleases()

if(releaseType != ReleaseType.all) {
releases = releases.filter { it.release_type == releaseType }
if(releaseTypes.isNotEmpty()) {
releases = releases.filter { releaseTypes.contains(it.release_type) }
}
if(releaseName != null) {
releases = releases.filter { it.release_name == releaseName }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@ package net.adoptium.api.v3.models
import org.eclipse.microprofile.openapi.annotations.enums.SchemaType
import org.eclipse.microprofile.openapi.annotations.media.Schema

@Schema(type = SchemaType.STRING, defaultValue = "ga", enumeration = ["all", "ga", "ea"])
@Schema(type = SchemaType.STRING, defaultValue = "ga", enumeration = ["ga", "ea"])
enum class ReleaseType {
all,
ga,
ea;
}

0 comments on commit 932606f

Please sign in to comment.