@@ -6,11 +6,12 @@ use crates_io::models::{NewDeletedCrate, User};
66use crates_io:: schema:: { crate_downloads, deleted_crates} ;
77use crates_io:: worker:: jobs;
88use crates_io:: { db, schema:: crates} ;
9+ use crates_io_database:: schema:: dependencies;
910use crates_io_worker:: BackgroundJob ;
10- use diesel:: dsl:: sql;
11+ use diesel:: dsl:: { count_star , sql} ;
1112use diesel:: expression:: SqlLiteral ;
1213use diesel:: prelude:: * ;
13- use diesel:: sql_types:: { Array , BigInt , Text } ;
14+ use diesel:: sql_types:: { Array , Text } ;
1415use diesel_async:: scoped_futures:: ScopedFutureExt ;
1516use diesel_async:: { AsyncConnection , AsyncPgConnection , RunQueryDsl } ;
1617use 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 ) ) ]
142144struct 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