@@ -5,7 +5,7 @@ use anyhow::Context;
55use colored:: Colorize ;
66use crates_io_worker:: BackgroundJob ;
77use diesel:: dsl:: sql;
8- use diesel:: sql_types:: { Array , Text } ;
8+ use diesel:: sql_types:: { Array , BigInt , Text } ;
99use diesel:: { ExpressionMethods , QueryDsl } ;
1010use diesel_async:: RunQueryDsl ;
1111use futures_util:: TryStreamExt ;
@@ -59,14 +59,24 @@ pub async fn run(opts: Opts) -> anyhow::Result<()> {
5959 )
6060 "# ,
6161 ) ,
62+ sql :: < BigInt > (
63+ r#"
64+ (SELECT COUNT(*)
65+ FROM dependencies
66+ WHERE dependencies.crate_id = crates.id)
67+ "# ,
68+ ) ,
6269 ) )
63- . load_stream :: < ( String , i32 , i64 , Vec < String > ) > ( & mut conn)
70+ . load_stream :: < ( String , i32 , i64 , Vec < String > , i64 ) > ( & mut conn)
6471 . await
6572 . context ( "Failed to look up crate name from the database" ) ?
66- . try_fold ( HashMap :: new ( ) , |mut map, ( name, id, downloads, owners) | {
67- map. insert ( name, CrateInfo :: new ( id, downloads, owners) ) ;
68- futures_util:: future:: ready ( Ok ( map) )
69- } )
73+ . try_fold (
74+ HashMap :: new ( ) ,
75+ |mut map, ( name, id, downloads, owners, rev_deps) | {
76+ map. insert ( name, CrateInfo :: new ( id, downloads, owners, rev_deps) ) ;
77+ futures_util:: future:: ready ( Ok ( map) )
78+ } ,
79+ )
7080 . await ?;
7181
7282 println ! ( "Deleting the following crates:" ) ;
@@ -126,14 +136,16 @@ struct CrateInfo {
126136 id : i32 ,
127137 downloads : i64 ,
128138 owners : Vec < String > ,
139+ rev_deps : i64 ,
129140}
130141
131142impl CrateInfo {
132- pub fn new ( id : i32 , downloads : i64 , owners : Vec < String > ) -> Self {
143+ pub fn new ( id : i32 , downloads : i64 , owners : Vec < String > , rev_deps : i64 ) -> Self {
133144 Self {
134145 id,
135146 downloads,
136147 owners,
148+ rev_deps,
137149 }
138150 }
139151}
@@ -148,6 +160,10 @@ impl Display for CrateInfo {
148160 let downloads = format ! ( "downloads={}" , self . downloads) . bright_red ( ) . bold ( ) ;
149161 write ! ( f, ", {downloads}" ) ?;
150162 }
163+ if self . rev_deps > 0 {
164+ let rev_deps = format ! ( "rev_deps={}" , self . rev_deps) . bright_red ( ) . bold ( ) ;
165+ write ! ( f, ", {rev_deps}" ) ?;
166+ }
151167
152168 Ok ( ( ) )
153169 }
0 commit comments