in core/search/src/main/kotlin/io/klibs/core/search/SearchController.kt [162:222]
fun searchPackages(
@RequestParam(required = false)
@Parameter(
description = "Arbitrary full text search query",
example = "kotlinx"
)
query: String?,
@RequestParam("platforms", required = false)
@Parameter(
description = "Filter by supported platforms. By default, this filter is not taken into account.",
schema = Schema(
type = "array",
allowableValues = ["common", "jvm", "androidJvm", "native", "wasm", "js"],
)
)
platforms: List<String> = emptyList(),
@RequestParam("owner", required = false)
@Parameter(
description = "Login of the owner",
schema = Schema(example = "Kotlin")
)
owner: String?,
@RequestParam("sort", required = false, defaultValue = "relevance")
@Parameter(
description = "Sorting order",
schema = Schema(allowableValues = ["most-stars", "relevance"], defaultValue = "relevance")
)
sortBy: String,
@RequestParam("page", required = false, defaultValue = "1")
@Parameter(
description = "Page index beginning with 1 (1..N)",
schema = Schema(type = "integer", minimum = "1", defaultValue = "1")
)
@Min(value = 0, message = "Page must be >= 0")
page: Int,
@RequestParam("limit", required = false, defaultValue = "20")
@Parameter(
description = "The size of the page to be returned",
schema = Schema(type = "integer", minimum = "1", maximum = "100", defaultValue = "20")
)
@Min(value = 1, message = "Limit must be >= 1")
@Max(value = 100, message = "Limit must be <= 100")
limit: Int,
): List<SearchPackageResultDTOTargetList> {
return searchService.searchPackage(
query = query,
platforms = platforms.map { PackagePlatform.findBySerializableName(it) },
targetFilters = emptyMap(),
ownerLogin = owner,
sort = SearchSort.findBySerializableName(sortBy),
page = page,
limit = limit
).map { it.toDTOTargetList() }
}