@@ -7,7 +7,7 @@ use crate::{
77 utils:: { rustc_version:: parse_rustc_date, MetadataPackage } ,
88 web:: crate_details:: { latest_release, releases_for_crate} ,
99} ;
10- use anyhow:: Context ;
10+ use anyhow:: { anyhow , Context } ;
1111use derive_more:: Display ;
1212use futures_util:: stream:: TryStreamExt ;
1313use serde:: Serialize ;
@@ -41,8 +41,10 @@ pub struct BuildId(pub i32);
4141/// not the files generated by rustdoc.
4242#[ allow( clippy:: too_many_arguments) ]
4343#[ instrument( skip( conn, compression_algorithms) ) ]
44- pub ( crate ) async fn add_package_into_database (
44+ pub ( crate ) async fn finish_release (
4545 conn : & mut sqlx:: PgConnection ,
46+ crate_id : CrateId ,
47+ release_id : ReleaseId ,
4648 metadata_pkg : & MetadataPackage ,
4749 source_dir : & Path ,
4850 default_target : & str ,
@@ -55,59 +57,42 @@ pub(crate) async fn add_package_into_database(
5557 repository_id : Option < i32 > ,
5658 archive_storage : bool ,
5759 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" ) ;
6162 let dependencies = convert_dependencies ( metadata_pkg) ;
6263 let rustdoc = get_rustdoc ( metadata_pkg, source_dir) . unwrap_or ( None ) ;
6364 let readme = get_readme ( metadata_pkg, source_dir) . unwrap_or ( None ) ;
6465 let features = get_features ( metadata_pkg) ;
6566 let is_library = metadata_pkg. is_library ( ) ;
6667
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 ,
11196 registry_data. release_time,
11297 serde_json:: to_value( dependencies) ?,
11398 metadata_pkg. package_name( ) ,
@@ -133,9 +118,13 @@ pub(crate) async fn add_package_into_database(
133118 archive_storage,
134119 source_size as i64 ,
135120 )
136- . fetch_one ( & mut * conn)
121+ . execute ( & mut * conn)
137122 . await ?;
138123
124+ if result. rows_affected ( ) < 1 {
125+ return Err ( anyhow ! ( "Failed to update release" ) ) ;
126+ }
127+
139128 add_keywords_into_database ( conn, metadata_pkg, release_id) . await ?;
140129 add_compression_into_database ( conn, compression_algorithms. into_iter ( ) , release_id) . await ?;
141130
@@ -145,7 +134,7 @@ pub(crate) async fn add_package_into_database(
145134
146135 update_build_status ( conn, release_id) . await ?;
147136
148- Ok ( release_id )
137+ Ok ( ( ) )
149138}
150139
151140pub async fn update_latest_version_id (
0 commit comments