@@ -33,6 +33,7 @@ class InMemoryPackageIndex {
3333 late final List <PackageHit > _createdOrderedHits;
3434 late final List <PackageHit > _updatedOrderedHits;
3535 late final List <PackageHit > _popularityOrderedHits;
36+ late final List <PackageHit > _downloadsOrderedHits;
3637 late final List <PackageHit > _likesOrderedHits;
3738 late final List <PackageHit > _pointsOrderedHits;
3839
@@ -81,6 +82,8 @@ class InMemoryPackageIndex {
8182 _updatedOrderedHits = _rankWithComparator (_compareUpdated);
8283 _popularityOrderedHits = _rankWithComparator (_comparePopularity,
8384 score: (doc) => doc.popularityScore ?? 0 );
85+ _downloadsOrderedHits = _rankWithComparator (_compareDownloads,
86+ score: (doc) => doc.downloadCount.toDouble ());
8487 _likesOrderedHits = _rankWithComparator (_compareLikes,
8588 score: (doc) => doc.likeCount.toDouble ());
8689 _pointsOrderedHits = _rankWithComparator (_comparePoints,
@@ -195,6 +198,9 @@ class InMemoryPackageIndex {
195198 case SearchOrder .popularity:
196199 packageHits = _popularityOrderedHits.whereInSet (packages);
197200 break ;
201+ case SearchOrder .downloads:
202+ packageHits = _downloadsOrderedHits.whereInSet (packages);
203+ break ;
198204 case SearchOrder .like:
199205 packageHits = _likesOrderedHits.whereInSet (packages);
200206 break ;
@@ -414,6 +420,12 @@ class InMemoryPackageIndex {
414420 return _compareUpdated (a, b);
415421 }
416422
423+ int _compareDownloads (PackageDocument a, PackageDocument b) {
424+ final x = - a.downloadCount.compareTo (b.downloadCount);
425+ if (x != 0 ) return x;
426+ return _compareUpdated (a, b);
427+ }
428+
417429 int _compareLikes (PackageDocument a, PackageDocument b) {
418430 final x = - a.likeCount.compareTo (b.likeCount);
419431 if (x != 0 ) return x;
0 commit comments