Skip to content

Commit ff400bc

Browse files
committed
More stats
1 parent 1942cdc commit ff400bc

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

src/packages/storage.gleam

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -487,24 +487,29 @@ fn try_fold_releases(
487487

488488
pub 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

497499
type 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

506510
pub 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) }),

src/packages/web/page.gleam

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ pub fn internet_points(stats: storage.InternetPoints) -> String {
5050
}
5151

5252
html.div([], [
53+
html.h2([], [html.text("Package total downloads")]),
54+
count_table(stats.package_download_counts),
5355
html.h2([], [html.text("Package owners total downloads")]),
5456
count_table(stats.owner_download_counts),
5557
html.h2([], [html.text("Package owners number of packages")]),

0 commit comments

Comments
 (0)