@@ -82,35 +82,36 @@ pub(crate) fn get_releases(
82
82
builds.build_time,
83
83
repositories.stars
84
84
FROM crates
85
- INNER JOIN releases ON crates.id = releases.crate_id
85
+ {1}
86
86
INNER JOIN builds ON releases.id = builds.rid
87
87
LEFT JOIN repositories ON releases.repository_id = repositories.id
88
88
WHERE
89
89
((NOT $3) OR (releases.build_status = FALSE AND releases.is_library = TRUE))
90
- AND ((NOT $4) OR crates.latest_version_id = releases.id)
91
90
AND {0} IS NOT NULL
92
91
93
92
ORDER BY {0} DESC
94
93
LIMIT $1 OFFSET $2" ,
95
94
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
+ }
96
100
) ;
97
101
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 ( )
114
115
}
115
116
116
117
fn get_releases_by_owner (
0 commit comments