8
8
#![ deny( warnings) ]
9
9
10
10
extern crate cargo_registry;
11
- extern crate postgres ;
11
+ extern crate diesel ;
12
12
extern crate time;
13
13
extern crate semver;
14
14
15
+ use diesel:: prelude:: * ;
16
+ use diesel:: pg:: PgConnection ;
15
17
use std:: env;
16
18
use std:: io;
17
19
use std:: io:: prelude:: * ;
18
20
19
21
use cargo_registry:: { Crate , Version } ;
22
+ use cargo_registry:: schema:: versions;
20
23
21
24
#[ allow( dead_code) ]
22
25
fn main ( ) {
23
- let conn = cargo_registry:: db:: connect_now_old ( ) ;
24
- {
25
- let tx = conn. transaction ( ) . unwrap ( ) ;
26
- delete ( & tx) ;
27
- tx. set_commit ( ) ;
28
- tx. finish ( ) . unwrap ( ) ;
29
- }
26
+ let conn = cargo_registry:: db:: connect_now ( ) . unwrap ( ) ;
27
+ conn. transaction :: < _ , diesel:: result:: Error , _ > ( || {
28
+ delete ( & conn) ;
29
+ Ok ( ( ) )
30
+ } ) . unwrap ( )
30
31
}
31
32
32
- fn delete ( tx : & postgres :: transaction :: Transaction ) {
33
+ fn delete ( conn : & PgConnection ) {
33
34
let name = match env:: args ( ) . nth ( 1 ) {
34
35
None => {
35
36
println ! ( "needs a crate-name argument" ) ;
@@ -44,11 +45,11 @@ fn delete(tx: &postgres::transaction::Transaction) {
44
45
}
45
46
Some ( s) => s,
46
47
} ;
47
- let version = semver:: Version :: parse ( & version) . unwrap ( ) ;
48
48
49
- let krate = Crate :: find_by_name ( tx, & name) . unwrap ( ) ;
50
- let v = Version :: find_by_num ( tx, krate. id , & version)
51
- . unwrap ( )
49
+ let krate = Crate :: by_name ( & name) . first :: < Crate > ( conn) . unwrap ( ) ;
50
+ let v = Version :: belonging_to ( & krate)
51
+ . filter ( versions:: num. eq ( & version) )
52
+ . first :: < Version > ( conn)
52
53
. unwrap ( ) ;
53
54
print ! (
54
55
"Are you sure you want to delete {}#{} ({}) [y/N]: " ,
@@ -64,20 +65,8 @@ fn delete(tx: &postgres::transaction::Transaction) {
64
65
}
65
66
66
67
println ! ( "deleting version {} ({})" , v. num, v. id) ;
67
- let n = tx. execute (
68
- "DELETE FROM version_downloads WHERE version_id = $1" ,
69
- & [ & v. id ] ,
70
- ) . unwrap ( ) ;
71
- println ! ( " {} download records deleted" , n) ;
72
- let n = tx. execute (
73
- "DELETE FROM version_authors WHERE version_id = $1" ,
74
- & [ & v. id ] ,
75
- ) . unwrap ( ) ;
76
- println ! ( " {} author records deleted" , n) ;
77
- let n = tx. execute ( "DELETE FROM dependencies WHERE version_id = $1" , & [ & v. id ] )
78
- . unwrap ( ) ;
79
- println ! ( " {} dependencies deleted" , n) ;
80
- tx. execute ( "DELETE FROM versions WHERE id = $1" , & [ & v. id ] )
68
+ diesel:: delete ( versions:: table. find ( & v. id ) )
69
+ . execute ( conn)
81
70
. unwrap ( ) ;
82
71
83
72
print ! ( "commit? [y/N]: " ) ;
0 commit comments