Skip to content

Commit 4820404

Browse files
authored
Merge pull request #10005 from Turbo87/less-raw-sql
admin/delete_crate: Replace raw SQL with diesel subquery builder
2 parents e26eda3 + c16a56e commit 4820404

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

src/bin/crates-admin/delete_crate.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@ use crates_io::models::{NewDeletedCrate, User};
66
use crates_io::schema::{crate_downloads, deleted_crates};
77
use crates_io::worker::jobs;
88
use crates_io::{db, schema::crates};
9+
use crates_io_database::schema::dependencies;
910
use crates_io_worker::BackgroundJob;
10-
use diesel::dsl::sql;
11+
use diesel::dsl::{count_star, sql};
1112
use diesel::expression::SqlLiteral;
1213
use diesel::prelude::*;
13-
use diesel::sql_types::{Array, BigInt, Text};
14+
use diesel::sql_types::{Array, Text};
1415
use diesel_async::scoped_futures::ScopedFutureExt;
1516
use diesel_async::{AsyncConnection, AsyncPgConnection, RunQueryDsl};
1617
use std::fmt::Display;
@@ -139,6 +140,7 @@ async fn delete_from_database(
139140
}
140141

141142
#[derive(Debug, Clone, Queryable, Selectable)]
143+
#[diesel(check_for_backend(diesel::pg::Pg))]
142144
struct CrateInfo {
143145
#[diesel(select_expression = crates::columns::name)]
144146
name: String,
@@ -199,12 +201,10 @@ fn owners_subquery() -> SqlLiteral<Array<Text>> {
199201
/// "default version" per crate. However, it's good enough for our
200202
/// purposes here.
201203
#[diesel::dsl::auto_type]
202-
fn rev_deps_subquery() -> SqlLiteral<BigInt> {
203-
sql(r#"
204-
(
205-
SELECT COUNT(*)
206-
FROM dependencies
207-
WHERE dependencies.crate_id = crates.id
208-
)
209-
"#)
204+
fn rev_deps_subquery() -> _ {
205+
dependencies::table
206+
.select(count_star())
207+
.filter(dependencies::crate_id.eq(crates::id))
208+
.single_value()
209+
.assume_not_null()
210210
}

0 commit comments

Comments
 (0)