@@ -82,35 +82,36 @@ pub(crate) fn get_releases(
8282 builds.build_time,
8383 repositories.stars
8484 FROM crates
85- INNER JOIN releases ON crates.id = releases.crate_id
85+ {1}
8686 INNER JOIN builds ON releases.id = builds.rid
8787 LEFT JOIN repositories ON releases.repository_id = repositories.id
8888 WHERE
8989 ((NOT $3) OR (releases.build_status = FALSE AND releases.is_library = TRUE))
90- AND ((NOT $4) OR crates.latest_version_id = releases.id)
9190 AND {0} IS NOT NULL
9291
9392 ORDER BY {0} DESC
9493 LIMIT $1 OFFSET $2" ,
9594 ordering,
95+ if latest_only {
96+ "INNER JOIN releases ON crates.latest_version_id = releases.id"
97+ } else {
98+ "INNER JOIN releases ON crates.id = releases.crate_id"
99+ }
96100 ) ;
97101
98- conn. query (
99- query. as_str ( ) ,
100- & [ & limit, & offset, & filter_failed, & latest_only] ,
101- )
102- . unwrap ( )
103- . into_iter ( )
104- . map ( |row| Release {
105- name : row. get ( 0 ) ,
106- version : row. get ( 1 ) ,
107- description : row. get ( 2 ) ,
108- target_name : row. get ( 3 ) ,
109- rustdoc_status : row. get ( 4 ) ,
110- build_time : row. get ( 5 ) ,
111- stars : row. get :: < _ , Option < i32 > > ( 6 ) . unwrap_or ( 0 ) ,
112- } )
113- . collect ( )
102+ conn. query ( query. as_str ( ) , & [ & limit, & offset, & filter_failed] )
103+ . unwrap ( )
104+ . into_iter ( )
105+ . map ( |row| Release {
106+ name : row. get ( 0 ) ,
107+ version : row. get ( 1 ) ,
108+ description : row. get ( 2 ) ,
109+ target_name : row. get ( 3 ) ,
110+ rustdoc_status : row. get ( 4 ) ,
111+ build_time : row. get ( 5 ) ,
112+ stars : row. get :: < _ , Option < i32 > > ( 6 ) . unwrap_or ( 0 ) ,
113+ } )
114+ . collect ( )
114115}
115116
116117fn get_releases_by_owner (
0 commit comments