@@ -7,6 +7,8 @@ use crate::worker::jobs;
77use crate :: worker:: jobs:: UpdateDefaultVersion ;
88use crates_io_worker:: BackgroundJob ;
99use diesel:: prelude:: * ;
10+ use diesel_async:: async_connection_wrapper:: AsyncConnectionWrapper ;
11+ use diesel_async:: { AsyncConnection , AsyncPgConnection , RunQueryDsl } ;
1012
1113#[ derive( clap:: Parser , Debug ) ]
1214#[ command(
@@ -24,24 +26,22 @@ pub struct Opts {
2426}
2527
2628pub async fn run ( opts : Opts ) -> anyhow:: Result < ( ) > {
27- spawn_blocking ( move || {
28- let mut conn = db:: oneoff_connection ( ) ?;
29- conn. transaction ( |conn| yank ( opts, conn) ) ?;
30- Ok ( ( ) )
31- } )
32- . await
29+ let mut conn = db:: oneoff_async_connection ( ) . await ?;
30+ conn. transaction ( |conn| yank ( opts, conn) ) ?;
31+ Ok ( ( ) )
3332}
3433
35- fn yank ( opts : Opts , conn : & mut PgConnection ) -> anyhow:: Result < ( ) > {
34+ async fn yank ( opts : Opts , conn : & mut AsyncPgConnection ) -> anyhow:: Result < ( ) > {
3635 let Opts {
3736 crate_name,
3837 version,
3938 yes,
4039 } = opts;
41- let krate: Crate = Crate :: by_name ( & crate_name) . first ( conn) ?;
40+ let krate: Crate = Crate :: by_name ( & crate_name) . first ( conn) . await ?;
4241 let v: Version = Version :: belonging_to ( & krate)
4342 . filter ( versions:: num. eq ( & version) )
44- . first ( conn) ?;
43+ . first ( conn)
44+ . await ?;
4545
4646 if v. yanked {
4747 println ! ( "Version {version} of crate {crate_name} is already yanked" ) ;
@@ -53,19 +53,25 @@ fn yank(opts: Opts, conn: &mut PgConnection) -> anyhow::Result<()> {
5353 "Are you sure you want to yank {crate_name}#{version} ({})?" ,
5454 v. id
5555 ) ;
56- if !dialoguer:: confirm ( & prompt) ? {
56+ if !dialoguer:: async_confirm ( & prompt) . await ? {
5757 return Ok ( ( ) ) ;
5858 }
5959 }
6060
6161 println ! ( "yanking version {} ({})" , v. num, v. id) ;
6262 diesel:: update ( & v)
6363 . set ( versions:: yanked. eq ( true ) )
64- . execute ( conn) ?;
64+ . execute ( conn)
65+ . await ?;
6566
66- jobs:: enqueue_sync_to_index ( & krate. name , conn) ?;
67+ spawn_blocking ( move || {
68+ let conn: & mut AsyncConnectionWrapper < _ > = & mut conn. into ( ) ;
6769
68- UpdateDefaultVersion :: new ( krate. id ) . enqueue ( conn) ?;
70+ jobs :: enqueue_sync_to_index ( & krate. name , conn) ?;
6971
70- Ok ( ( ) )
72+ UpdateDefaultVersion :: new ( krate. id ) . enqueue ( conn) ?;
73+
74+ Ok ( ( ) )
75+ } )
76+ . await
7177}
0 commit comments