@@ -487,24 +487,29 @@ fn try_fold_releases(
487487
488488pub type InternetPoints {
489489 InternetPoints (
490+ total_downloads : Int ,
490491 package_counts : List ( # ( String , Int ) ) ,
491492 release_counts : List ( # ( String , Int ) ) ,
493+ package_download_counts : List ( # ( String , Int ) ) ,
492494 owner_download_counts : List ( # ( String , Int ) ) ,
493495 owner_package_counts : List ( # ( String , Int ) ) ,
494496 )
495497}
496498
497499type InternetPointsAcc {
498500 InternetPointsAcc (
501+ total_downloads : Int ,
499502 package_counts : dict . Dict ( String , Int ) ,
500503 release_counts : dict . Dict ( String , Int ) ,
504+ package_download_counts : dict . Dict ( String , Int ) ,
501505 owner_download_counts : dict . Dict ( String , Int ) ,
502506 owner_package_counts : dict . Dict ( String , Int ) ,
503507 )
504508}
505509
506510pub fn internet_points ( database : Database ) -> Result ( InternetPoints , Error ) {
507- let acc = InternetPointsAcc ( dict . new ( ) , dict . new ( ) , dict . new ( ) , dict . new ( ) )
511+ let d = dict . new ( )
512+ let acc = InternetPointsAcc ( 0 , d , d , d , d , d )
508513
509514 use acc <- result . try (
510515 try_fold_packages ( database , acc , fn ( acc , package ) {
@@ -519,6 +524,10 @@ pub fn internet_points(database: Database) -> Result(InternetPoints, Error) {
519524 |> dict . upsert ( counts , _, fn ( c ) { option . unwrap ( c , 0 ) + 1 } )
520525 }
521526
527+ let package_download_counts =
528+ dict . upsert ( acc . package_download_counts , package . name , fn ( c ) {
529+ option . unwrap ( c , 0 ) + package . downloads_all
530+ } )
522531 let owner_package_counts = count_for_owners ( acc . owner_package_counts , 1 )
523532 let owner_download_counts =
524533 count_for_owners ( acc . owner_download_counts , package . downloads_all )
@@ -541,8 +550,10 @@ pub fn internet_points(database: Database) -> Result(InternetPoints, Error) {
541550
542551 let acc =
543552 InternetPointsAcc (
553+ total_downloads : acc . total_downloads + package . downloads_all ,
544554 release_counts : ,
545555 package_counts : ,
556+ package_download_counts : ,
546557 owner_download_counts : ,
547558 owner_package_counts : ,
548559 )
@@ -551,12 +562,16 @@ pub fn internet_points(database: Database) -> Result(InternetPoints, Error) {
551562 )
552563
553564 Ok ( InternetPoints (
565+ total_downloads : echo acc . total_downloads ,
554566 package_counts : acc . package_counts
555567 |> dict . to_list
556568 |> list . sort ( fn ( a , b ) { string . compare ( a . 0 , b . 0 ) } ) ,
557569 release_counts : acc . release_counts
558570 |> dict . to_list
559571 |> list . sort ( fn ( a , b ) { string . compare ( a . 0 , b . 0 ) } ) ,
572+ package_download_counts : acc . package_download_counts
573+ |> dict . to_list
574+ |> list . sort ( fn ( a , b ) { int . compare ( b . 1 , a . 1 ) } ) ,
560575 owner_download_counts : acc . owner_download_counts
561576 |> dict . to_list
562577 |> list . sort ( fn ( a , b ) { int . compare ( b . 1 , a . 1 ) } ) ,
0 commit comments