Enforce grouped NuGet search results (#21442)

Fixes #21434

Added tests to enforce this behaviour.

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
KN4CK3R 2022-10-16 19:18:09 +02:00 committed by GitHub
parent cad9adeff4
commit 11d3677818
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 72 additions and 37 deletions

View file

@ -207,20 +207,13 @@ type SearchResultVersion struct {
}
func createSearchResultResponse(l *linkBuilder, totalHits int64, pds []*packages_model.PackageDescriptor) *SearchResultResponse {
grouped := make(map[string][]*packages_model.PackageDescriptor)
for _, pd := range pds {
grouped[pd.Package.Name] = append(grouped[pd.Package.Name], pd)
}
data := make([]*SearchResult, 0, len(pds))
if len(pds) > 0 {
groupID := pds[0].Package.Name
group := make([]*packages_model.PackageDescriptor, 0, 10)
for i := 0; i < len(pds); i++ {
if groupID != pds[i].Package.Name {
data = append(data, createSearchResult(l, group))
groupID = pds[i].Package.Name
group = group[:0]
}
group = append(group, pds[i])
}
for _, group := range grouped {
data = append(data, createSearchResult(l, group))
}