@@ -69,18 +69,12 @@ pub(crate) fn get_releases(conn: &Connection, page: i64, limit: i64, order: Orde
69
69
let offset = ( page - 1 ) * limit;
70
70
71
71
// WARNING: it is _crucial_ that this always be hard-coded and NEVER be user input
72
- let ( ordering, failed ) : ( & ' static str , _ ) = match order {
72
+ let ( ordering, filter_failed ) : ( & ' static str , _ ) = match order {
73
73
Order :: ReleaseTime => ( "releases.release_time" , false ) ,
74
74
Order :: GithubStars => ( "crates.github_stars" , false ) ,
75
75
Order :: RecentFailures => ( "releases.release_time" , true ) ,
76
76
Order :: FailuresByGithubStars => ( "crates.github_stars" , true ) ,
77
77
} ;
78
- let where_clause = if failed {
79
- "WHERE releases.build_status = FALSE AND releases.is_library = TRUE"
80
- } else {
81
- ""
82
- } ;
83
-
84
78
let query = format ! (
85
79
"SELECT crates.name,
86
80
releases.version,
@@ -91,13 +85,13 @@ pub(crate) fn get_releases(conn: &Connection, page: i64, limit: i64, order: Orde
91
85
crates.github_stars
92
86
FROM crates
93
87
INNER JOIN releases ON crates.id = releases.crate_id
94
- {}
88
+ WHERE (NOT $3) OR (releases.build_status = FALSE AND releases.is_library = TRUE)
95
89
ORDER BY {} DESC
96
90
LIMIT $1 OFFSET $2" ,
97
- where_clause , ordering,
91
+ ordering,
98
92
) ;
99
93
100
- conn. query ( & query, & [ & limit, & offset] )
94
+ conn. query ( & query, & [ & limit, & offset, & filter_failed ] )
101
95
. unwrap ( )
102
96
. into_iter ( )
103
97
. map ( |row| Release {
0 commit comments