From f57d9c1bbe30a236ab94dfb40ea6c78b91fdfca3 Mon Sep 17 00:00:00 2001 From: Joshua Nelson Date: Fri, 21 Aug 2020 10:47:27 -0400 Subject: [PATCH] Show at most one release per crate on /releases --- src/web/releases.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/web/releases.rs b/src/web/releases.rs index 4f8e015fb..82e625f1e 100644 --- a/src/web/releases.rs +++ b/src/web/releases.rs @@ -85,7 +85,9 @@ pub(crate) fn get_releases(conn: &mut Client, page: i64, limit: i64, order: Orde crates.github_stars FROM crates INNER JOIN releases ON crates.id = releases.crate_id - WHERE (NOT $3) OR (releases.build_status = FALSE AND releases.is_library = TRUE) + WHERE + ((NOT $3) OR (releases.build_status = FALSE AND releases.is_library = TRUE)) + AND crates.latest_version_id = releases.id ORDER BY {} DESC LIMIT $1 OFFSET $2", ordering, @@ -1024,6 +1026,11 @@ mod tests { .name("crate_that_succeeded") .version("0.1.0") .create()?; + // make sure that crates get at most one release shown, so they don't crowd the page + env.fake_release() + .name("crate_that_succeeded") + .version("0.2.0") + .create()?; env.fake_release() .name("crate_that_failed") .version("0.1.0") @@ -1046,7 +1053,7 @@ mod tests { let url = attributes.get("href").unwrap(); if url.contains("crate_that_succeeded") { assert_eq!( - url, "/crate_that_succeeded/0.1.0/crate_that_succeeded", + url, "/crate_that_succeeded/0.2.0/crate_that_succeeded", "for path {}", path );