fun searchPackages()

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() }
    }