Skip to content

Commit ec8b786

Browse files
jyn514Joshua Nelson
authored and
Joshua Nelson
committed
Use SQL instead of metaprogramming where possible
1 parent 494fa44 commit ec8b786

File tree

1 file changed

+4
-10
lines changed

1 file changed

+4
-10
lines changed

src/web/releases.rs

+4-10
Original file line numberDiff line numberDiff line change
@@ -69,18 +69,12 @@ pub(crate) fn get_releases(conn: &Connection, page: i64, limit: i64, order: Orde
6969
let offset = (page - 1) * limit;
7070

7171
// 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 {
7373
Order::ReleaseTime => ("releases.release_time", false),
7474
Order::GithubStars => ("crates.github_stars", false),
7575
Order::RecentFailures => ("releases.release_time", true),
7676
Order::FailuresByGithubStars => ("crates.github_stars", true),
7777
};
78-
let where_clause = if failed {
79-
"WHERE releases.build_status = FALSE AND releases.is_library = TRUE"
80-
} else {
81-
""
82-
};
83-
8478
let query = format!(
8579
"SELECT crates.name,
8680
releases.version,
@@ -91,13 +85,13 @@ pub(crate) fn get_releases(conn: &Connection, page: i64, limit: i64, order: Orde
9185
crates.github_stars
9286
FROM crates
9387
INNER JOIN releases ON crates.id = releases.crate_id
94-
{}
88+
WHERE (NOT $3) OR (releases.build_status = FALSE AND releases.is_library = TRUE)
9589
ORDER BY {} DESC
9690
LIMIT $1 OFFSET $2",
97-
where_clause, ordering,
91+
ordering,
9892
);
9993

100-
conn.query(&query, &[&limit, &offset])
94+
conn.query(&query, &[&limit, &offset, &filter_failed])
10195
.unwrap()
10296
.into_iter()
10397
.map(|row| Release {

0 commit comments

Comments
 (0)