@@ -7,7 +7,7 @@ use crate::{
7
7
utils:: { rustc_version:: parse_rustc_date, MetadataPackage } ,
8
8
web:: crate_details:: { latest_release, releases_for_crate} ,
9
9
} ;
10
- use anyhow:: Context ;
10
+ use anyhow:: { anyhow , Context } ;
11
11
use derive_more:: Display ;
12
12
use futures_util:: stream:: TryStreamExt ;
13
13
use serde:: Serialize ;
@@ -41,8 +41,10 @@ pub struct BuildId(pub i32);
41
41
/// not the files generated by rustdoc.
42
42
#[ allow( clippy:: too_many_arguments) ]
43
43
#[ instrument( skip( conn, compression_algorithms) ) ]
44
- pub ( crate ) async fn add_package_into_database (
44
+ pub ( crate ) async fn finish_release (
45
45
conn : & mut sqlx:: PgConnection ,
46
+ crate_id : CrateId ,
47
+ release_id : ReleaseId ,
46
48
metadata_pkg : & MetadataPackage ,
47
49
source_dir : & Path ,
48
50
default_target : & str ,
@@ -55,59 +57,42 @@ pub(crate) async fn add_package_into_database(
55
57
repository_id : Option < i32 > ,
56
58
archive_storage : bool ,
57
59
source_size : u64 ,
58
- ) -> Result < ReleaseId > {
59
- debug ! ( "Adding package into database" ) ;
60
- let crate_id = initialize_crate ( conn, & metadata_pkg. name ) . await ?;
60
+ ) -> Result < ( ) > {
61
+ debug ! ( "updating release data" ) ;
61
62
let dependencies = convert_dependencies ( metadata_pkg) ;
62
63
let rustdoc = get_rustdoc ( metadata_pkg, source_dir) . unwrap_or ( None ) ;
63
64
let readme = get_readme ( metadata_pkg, source_dir) . unwrap_or ( None ) ;
64
65
let features = get_features ( metadata_pkg) ;
65
66
let is_library = metadata_pkg. is_library ( ) ;
66
67
67
- let release_id = sqlx:: query_scalar!(
68
- r#"INSERT INTO releases (
69
- crate_id, version, release_time,
70
- dependencies, target_name, yanked,
71
- rustdoc_status, test_status, license, repository_url,
72
- homepage_url, description, description_long, readme,
73
- keywords, have_examples, downloads, files,
74
- doc_targets, is_library,
75
- documentation_url, default_target, features,
76
- repository_id, archive_storage, source_size
77
- )
78
- VALUES (
79
- $1, $2, $3, $4, $5, $6, $7, $8, $9,
80
- $10, $11, $12, $13, $14, $15, $16, $17, $18,
81
- $19, $20, $21, $22, $23, $24, $25, $26
82
- )
83
- ON CONFLICT (crate_id, version) DO UPDATE
84
- SET release_time = $3,
85
- dependencies = $4,
86
- target_name = $5,
87
- yanked = $6,
88
- rustdoc_status = $7,
89
- test_status = $8,
90
- license = $9,
91
- repository_url = $10,
92
- homepage_url = $11,
93
- description = $12,
94
- description_long = $13,
95
- readme = $14,
96
- keywords = $15,
97
- have_examples = $16,
98
- downloads = $17,
99
- files = $18,
100
- doc_targets = $19,
101
- is_library = $20,
102
- documentation_url = $21,
103
- default_target = $22,
104
- features = $23,
105
- repository_id = $24,
106
- archive_storage = $25,
107
- source_size = $26
108
- RETURNING id as "id: ReleaseId" "# ,
109
- crate_id. 0 ,
110
- & metadata_pkg. version,
68
+ let result = sqlx:: query!(
69
+ r#"UPDATE releases
70
+ SET release_time = $2,
71
+ dependencies = $3,
72
+ target_name = $4,
73
+ yanked = $5,
74
+ rustdoc_status = $6,
75
+ test_status = $7,
76
+ license = $8,
77
+ repository_url = $9,
78
+ homepage_url = $10,
79
+ description = $11,
80
+ description_long = $12,
81
+ readme = $13,
82
+ keywords = $14,
83
+ have_examples = $15,
84
+ downloads = $16,
85
+ files = $17,
86
+ doc_targets = $18,
87
+ is_library = $19,
88
+ documentation_url = $20,
89
+ default_target = $21,
90
+ features = $22,
91
+ repository_id = $23,
92
+ archive_storage = $24,
93
+ source_size = $25
94
+ WHERE id = $1"# ,
95
+ release_id. 0 ,
111
96
registry_data. release_time,
112
97
serde_json:: to_value( dependencies) ?,
113
98
metadata_pkg. package_name( ) ,
@@ -133,9 +118,13 @@ pub(crate) async fn add_package_into_database(
133
118
archive_storage,
134
119
source_size as i64 ,
135
120
)
136
- . fetch_one ( & mut * conn)
121
+ . execute ( & mut * conn)
137
122
. await ?;
138
123
124
+ if result. rows_affected ( ) < 1 {
125
+ return Err ( anyhow ! ( "Failed to update release" ) ) ;
126
+ }
127
+
139
128
add_keywords_into_database ( conn, metadata_pkg, release_id) . await ?;
140
129
add_compression_into_database ( conn, compression_algorithms. into_iter ( ) , release_id) . await ?;
141
130
@@ -145,7 +134,7 @@ pub(crate) async fn add_package_into_database(
145
134
146
135
update_build_status ( conn, release_id) . await ?;
147
136
148
- Ok ( release_id )
137
+ Ok ( ( ) )
149
138
}
150
139
151
140
pub async fn update_latest_version_id (
0 commit comments