Skip to content

Commit 3947c3b

Browse files
authored
Merge pull request #9774 from Turbo87/simplify-duplicate-version-error
controllers/krate/publish: Simplify "duplicate version" error code
2 parents 3ce70e7 + 7f0b098 commit 3947c3b

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

src/controllers/krate/publish.rs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -373,16 +373,14 @@ pub async fn publish(app: AppState, req: BytesRequest) -> AppResult<Json<GoodCra
373373
.bin_names(bin_names.as_slice())
374374
.build();
375375

376-
let version = match new_version.save(conn, &verified_email_address) {
377-
Err(diesel::result::Error::DatabaseError(diesel::result::DatabaseErrorKind::UniqueViolation, _)) => {
378-
return Err(bad_request(format_args!(
379-
"crate version `{}` is already uploaded",
380-
new_version.num_no_build
381-
)));
382-
},
383-
Err(error) => return Err(error.into()),
384-
Ok(version) => version,
385-
};
376+
let version = new_version.save(conn, &verified_email_address).map_err(|error| {
377+
use diesel::result::{Error, DatabaseErrorKind};
378+
match error {
379+
Error::DatabaseError(DatabaseErrorKind::UniqueViolation, _) =>
380+
duplicate_version_error(new_version.num_no_build),
381+
error => error.into(),
382+
}
383+
})?;
386384

387385
insert_version_owner_action(
388386
conn,
@@ -620,6 +618,10 @@ fn missing_metadata_error_message(missing: &[&str]) -> String {
620618
)
621619
}
622620

621+
fn duplicate_version_error(version: &str) -> BoxedAppError {
622+
bad_request(format!("crate version `{version}` is already uploaded"))
623+
}
624+
623625
fn validate_rust_version(value: &str) -> AppResult<()> {
624626
match semver::VersionReq::parse(value) {
625627
// Exclude semver operators like `^` and pre-release identifiers

0 commit comments

Comments
 (0)