diff --git a/src/bin/crates-admin/delete_crate.rs b/src/bin/crates-admin/delete_crate.rs index 52ab1722c11..0cc1ec59e89 100644 --- a/src/bin/crates-admin/delete_crate.rs +++ b/src/bin/crates-admin/delete_crate.rs @@ -61,7 +61,7 @@ pub async fn run(opts: Opts) -> anyhow::Result<()> { .await .context("Failed to look up crate name from the database")?; - let deleted_by = User::async_find_by_login(&mut conn, &opts.deleted_by) + let deleted_by = User::find_by_login(&mut conn, &opts.deleted_by) .await .context("Failed to look up `--deleted-by` user from the database")?; diff --git a/src/controllers/crate_owner_invitation.rs b/src/controllers/crate_owner_invitation.rs index f090c9a6763..ce298f76672 100644 --- a/src/controllers/crate_owner_invitation.rs +++ b/src/controllers/crate_owner_invitation.rs @@ -110,7 +110,7 @@ async fn prepare_list( ListFilter::CrateName(crate_name) => { // Only allow crate owners to query pending invitations for their crate. let krate: Crate = Crate::by_name(&crate_name).first(conn).await?; - let owners = krate.async_owners(conn).await?; + let owners = krate.owners(conn).await?; if user.rights(state, &owners).await? != Rights::Full { let detail = "only crate owners can query pending invitations for their crate"; return Err(forbidden(detail)); diff --git a/src/controllers/github/secret_scanning.rs b/src/controllers/github/secret_scanning.rs index 3426712b90a..b42da729322 100644 --- a/src/controllers/github/secret_scanning.rs +++ b/src/controllers/github/secret_scanning.rs @@ -187,7 +187,7 @@ async fn send_notification_email( .await .context("Failed to find user")?; - let Some(recipient) = user.async_email(conn).await? else { + let Some(recipient) = user.email(conn).await? else { return Err(anyhow!("No address found")); }; @@ -199,7 +199,7 @@ async fn send_notification_email( url: &alert.url, }; - state.emails.async_send(&recipient, email).await?; + state.emails.send(&recipient, email).await?; Ok(()) } diff --git a/src/controllers/krate/owners.rs b/src/controllers/krate/owners.rs index 9e1bd6e3c41..47a1d2f2ffe 100644 --- a/src/controllers/krate/owners.rs +++ b/src/controllers/krate/owners.rs @@ -30,7 +30,7 @@ pub async fn owners(state: AppState, Path(crate_name): Path) -> AppResul .ok_or_else(|| crate_not_found(&crate_name))?; let owners = krate - .async_owners(&mut conn) + .owners(&mut conn) .await? .into_iter() .map(Owner::into) @@ -144,7 +144,7 @@ async fn modify_owners( .optional()? .ok_or_else(|| crate_not_found(&crate_name))?; - let owners = krate.async_owners(conn).await?; + let owners = krate.owners(conn).await?; match user.rights(&app, &owners).await? { Rights::Full => {} @@ -188,7 +188,7 @@ async fn modify_owners( )); if let Some(recipient) = - invitee.async_verified_email(conn).await.ok().flatten() + invitee.verified_email(conn).await.ok().flatten() { emails.push(OwnerInviteEmail { recipient_email_address: recipient, @@ -243,7 +243,7 @@ async fn modify_owners( for email in emails { let addr = email.recipient_email_address().to_string(); - if let Err(e) = app.emails.async_send(&addr, email).await { + if let Err(e) = app.emails.send(&addr, email).await { warn!("Failed to send co-owner invite email: {e}"); } } diff --git a/src/controllers/krate/publish.rs b/src/controllers/krate/publish.rs index 1d5efd5e82d..ae7828dea44 100644 --- a/src/controllers/krate/publish.rs +++ b/src/controllers/krate/publish.rs @@ -118,7 +118,7 @@ pub async fn publish(app: AppState, req: BytesRequest) -> AppResult AppResult persist.update(conn).await?, }; - let owners = krate.async_owners(conn).await?; + let owners = krate.owners(conn).await?; if user.rights(&app, &owners).await? < Rights::Publish { return Err(custom(StatusCode::FORBIDDEN, MISSING_RIGHTS_ERROR_MESSAGE)); } diff --git a/src/controllers/token.rs b/src/controllers/token.rs index 04bcc14f26d..e51d328c0c8 100644 --- a/src/controllers/token.rs +++ b/src/controllers/token.rs @@ -132,7 +132,7 @@ pub async fn new( .transpose() .map_err(|_err| bad_request("invalid endpoint scope"))?; - let recipient = user.async_email(&mut conn).await?; + let recipient = user.email(&mut conn).await?; let api_token = ApiToken::insert_with_scopes( &mut conn, @@ -154,7 +154,7 @@ pub async fn new( // At this point the token has been created so failing to send the // email should not cause an error response to be returned to the // caller. - let email_ret = app.emails.async_send(&recipient, email).await; + let email_ret = app.emails.send(&recipient, email).await; if let Err(e) = email_ret { error!("Failed to send token creation email: {e}") } diff --git a/src/controllers/user/resend.rs b/src/controllers/user/resend.rs index 5fb0328f10a..d73f47697e9 100644 --- a/src/controllers/user/resend.rs +++ b/src/controllers/user/resend.rs @@ -45,7 +45,7 @@ pub async fn regenerate_token_and_send( state .emails - .async_send(&email.email, email1) + .send(&email.email, email1) .await .map_err(BoxedAppError::from) } diff --git a/src/controllers/user/update.rs b/src/controllers/user/update.rs index 0d86e1df02a..e3079fe7b2c 100644 --- a/src/controllers/user/update.rs +++ b/src/controllers/user/update.rs @@ -50,7 +50,7 @@ pub async fn update_user( .await?; if !publish_notifications { - let email_address = user.async_verified_email(&mut conn).await?; + let email_address = user.verified_email(&mut conn).await?; if let Some(email_address) = email_address { let email = PublishNotificationsUnsubscribeEmail { @@ -58,7 +58,7 @@ pub async fn update_user( domain: &state.emails.domain, }; - if let Err(error) = state.emails.async_send(&email_address, email).await { + if let Err(error) = state.emails.send(&email_address, email).await { warn!("Failed to send publish notifications unsubscribe email to {email_address}: {error}"); } } @@ -103,7 +103,7 @@ pub async fn update_user( token, }; - let _ = state.emails.async_send(user_email, email).await; + let _ = state.emails.send(user_email, email).await; } ok_true() diff --git a/src/controllers/version/metadata.rs b/src/controllers/version/metadata.rs index 98b96217902..fa002a8bc0f 100644 --- a/src/controllers/version/metadata.rs +++ b/src/controllers/version/metadata.rs @@ -186,7 +186,7 @@ pub async fn perform_version_yank_update( let api_token_id = auth.api_token_id(); let user = auth.user(); - let owners = krate.async_owners(conn).await?; + let owners = krate.owners(conn).await?; let yanked = yanked.unwrap_or(version.yanked); diff --git a/src/email.rs b/src/email.rs index 79312d7567e..b62cbce014b 100644 --- a/src/email.rs +++ b/src/email.rs @@ -10,7 +10,6 @@ use lettre::transport::stub::AsyncStubTransport; use lettre::{Address, AsyncTransport, Message, Tokio1Executor}; use rand::distributions::{Alphanumeric, DistString}; use std::sync::Arc; -use tokio::runtime::Handle; pub trait Email { fn subject(&self) -> String; @@ -115,15 +114,7 @@ impl Emails { Ok(message) } - pub fn send(&self, recipient: &str, email: E) -> Result<(), EmailError> { - let email = self.build_message(recipient, email)?; - - Handle::current() - .block_on(self.backend.send(email)) - .map_err(EmailError::TransportError) - } - - pub async fn async_send(&self, recipient: &str, email: E) -> Result<(), EmailError> { + pub async fn send(&self, recipient: &str, email: E) -> Result<(), EmailError> { let email = self.build_message(recipient, email)?; self.backend @@ -195,7 +186,7 @@ mod tests { let emails = Emails::new_in_memory(); let address = "String.Format(\"{0}.{1}@live.com\", FirstName, LastName)"; - assert_err!(emails.async_send(address, TestEmail).await); + assert_err!(emails.send(address, TestEmail).await); } #[tokio::test] @@ -203,6 +194,6 @@ mod tests { let emails = Emails::new_in_memory(); let address = "someone@example.com"; - assert_ok!(emails.async_send(address, TestEmail).await); + assert_ok!(emails.send(address, TestEmail).await); } } diff --git a/src/models/krate.rs b/src/models/krate.rs index 9e26a5e01f4..1f982815827 100644 --- a/src/models/krate.rs +++ b/src/models/krate.rs @@ -2,9 +2,10 @@ use chrono::NaiveDateTime; use diesel::associations::Identifiable; use diesel::dsl; use diesel::pg::Pg; +use diesel::prelude::*; use diesel::sql_types::{Bool, Integer, Text}; use diesel_async::scoped_futures::ScopedFutureExt; -use diesel_async::{AsyncConnection, AsyncPgConnection}; +use diesel_async::{AsyncConnection, AsyncPgConnection, RunQueryDsl}; use secrecy::SecretString; use thiserror::Error; @@ -17,8 +18,6 @@ use crate::models::{ }; use crate::schema::*; use crate::sql::canon_crate_name; -use crate::util::diesel::prelude::*; -use crate::util::diesel::Conn; use crate::util::errors::{bad_request, version_not_found, AppResult}; use crate::{app::App, util::errors::BoxedAppError}; @@ -110,7 +109,6 @@ pub struct NewCrate<'a> { impl<'a> NewCrate<'a> { pub async fn update(&self, conn: &mut AsyncPgConnection) -> QueryResult { use diesel::update; - use diesel_async::RunQueryDsl; update(crates::table) .filter(canon_crate_name(crates::name).eq(canon_crate_name(self.name))) @@ -127,8 +125,6 @@ impl<'a> NewCrate<'a> { } pub async fn create(&self, conn: &mut AsyncPgConnection, user_id: i32) -> QueryResult { - use diesel_async::RunQueryDsl; - conn.transaction(|conn| { async move { let krate: Crate = diesel::insert_into(crates::table) @@ -209,8 +205,6 @@ impl Crate { conn: &mut AsyncPgConnection, version: &str, ) -> AppResult { - use diesel_async::RunQueryDsl; - Version::belonging_to(self) .filter(versions::num.eq(version)) .first(conn) @@ -353,8 +347,6 @@ impl Crate { /// highest version (in semver order) for the current crate, /// where all top versions are not yanked. pub async fn top_versions(&self, conn: &mut AsyncPgConnection) -> QueryResult { - use diesel_async::RunQueryDsl; - Ok(TopVersions::from_date_version_pairs( Version::belonging_to(self) .filter(versions::yanked.eq(false)) @@ -364,9 +356,7 @@ impl Crate { )) } - pub async fn async_owners(&self, conn: &mut AsyncPgConnection) -> QueryResult> { - use diesel_async::RunQueryDsl; - + pub async fn owners(&self, conn: &mut AsyncPgConnection) -> QueryResult> { let users = CrateOwner::by_owner_kind(OwnerKind::User) .filter(crate_owners::crate_id.eq(self.id)) .order((crate_owners::owner_id, crate_owners::owner_kind)) @@ -390,29 +380,6 @@ impl Crate { Ok(users.chain(teams).collect()) } - pub fn owners(&self, conn: &mut impl Conn) -> QueryResult> { - use diesel::RunQueryDsl; - - let users = CrateOwner::by_owner_kind(OwnerKind::User) - .filter(crate_owners::crate_id.eq(self.id)) - .order((crate_owners::owner_id, crate_owners::owner_kind)) - .inner_join(users::table) - .select(User::as_select()) - .load(conn)? - .into_iter() - .map(Owner::User); - let teams = CrateOwner::by_owner_kind(OwnerKind::Team) - .filter(crate_owners::crate_id.eq(self.id)) - .order((crate_owners::owner_id, crate_owners::owner_kind)) - .inner_join(teams::table) - .select(Team::as_select()) - .load(conn)? - .into_iter() - .map(Owner::Team); - - Ok(users.chain(teams).collect()) - } - /// Invite `login` as an owner of this crate, returning the created /// [`NewOwnerInvite`]. pub async fn owner_add( @@ -423,7 +390,6 @@ impl Crate { login: &str, ) -> Result { use diesel::insert_into; - use diesel_async::RunQueryDsl; let owner = Owner::find_or_create_by_login(app, conn, req_user, login).await?; match owner { @@ -466,8 +432,6 @@ impl Crate { } pub async fn owner_remove(&self, conn: &mut AsyncPgConnection, login: &str) -> AppResult<()> { - use diesel_async::RunQueryDsl; - let query = diesel::sql_query( r#"WITH crate_owners_with_login AS ( SELECT @@ -519,7 +483,6 @@ impl Crate { ) -> QueryResult<(Vec, i64)> { use diesel::sql_query; use diesel::sql_types::{BigInt, Integer}; - use diesel_async::RunQueryDsl; let offset = options.offset().unwrap_or_default(); let rows: Vec> = diff --git a/src/models/owner.rs b/src/models/owner.rs index 05d57fe77e8..415dad571f3 100644 --- a/src/models/owner.rs +++ b/src/models/owner.rs @@ -71,7 +71,7 @@ impl Owner { Team::create_or_update(app, conn, name, req_user).await?, )) } else { - User::async_find_by_login(conn, name) + User::find_by_login(conn, name) .await .optional()? .map(Owner::User) diff --git a/src/models/team.rs b/src/models/team.rs index 2c562d5fe94..6c0b925aa20 100644 --- a/src/models/team.rs +++ b/src/models/team.rs @@ -1,5 +1,6 @@ use bon::Builder; -use diesel_async::AsyncPgConnection; +use diesel::prelude::*; +use diesel_async::{AsyncPgConnection, RunQueryDsl}; use http::StatusCode; use crate::app::App; @@ -10,9 +11,6 @@ use oauth2::AccessToken; use crate::models::{Crate, CrateOwner, Owner, OwnerKind, User}; use crate::schema::{crate_owners, teams}; -use crate::sql::lower; -use crate::util::diesel::prelude::*; -use crate::util::diesel::Conn; /// For now, just a Github Team. Can be upgraded to other teams /// later if desirable. @@ -46,9 +44,8 @@ pub struct NewTeam<'a> { } impl<'a> NewTeam<'a> { - pub async fn async_create_or_update(&self, conn: &mut AsyncPgConnection) -> QueryResult { + pub async fn create_or_update(&self, conn: &mut AsyncPgConnection) -> QueryResult { use diesel::insert_into; - use diesel_async::RunQueryDsl; insert_into(teams::table) .values(self) @@ -58,30 +55,9 @@ impl<'a> NewTeam<'a> { .get_result(conn) .await } - - pub fn create_or_update(&self, conn: &mut impl Conn) -> QueryResult { - use diesel::insert_into; - use diesel::RunQueryDsl; - - insert_into(teams::table) - .values(self) - .on_conflict(teams::github_id) - .do_update() - .set(self) - .get_result(conn) - } } impl Team { - pub fn find_by_login(conn: &mut impl Conn, login: &str) -> QueryResult { - use diesel::RunQueryDsl; - - teams::table - .filter(lower(teams::login).eq(&login.to_lowercase())) - .first(conn) - .map_err(Into::into) - } - /// Tries to create the Team in the DB (assumes a `:` has already been found). /// /// # Panics @@ -178,7 +154,7 @@ impl Team { .maybe_name(team.name.as_deref()) .maybe_avatar(org.avatar_url.as_deref()) .build() - .async_create_or_update(conn) + .create_or_update(conn) .await .map_err(Into::into) } @@ -199,8 +175,6 @@ impl Team { } pub async fn owning(krate: &Crate, conn: &mut AsyncPgConnection) -> QueryResult> { - use diesel_async::RunQueryDsl; - let base_query = CrateOwner::belonging_to(krate).filter(crate_owners::deleted.eq(false)); let teams = base_query .inner_join(teams::table) diff --git a/src/models/user.rs b/src/models/user.rs index dbd60433c19..10ddf3913df 100644 --- a/src/models/user.rs +++ b/src/models/user.rs @@ -1,6 +1,7 @@ use chrono::NaiveDateTime; +use diesel::prelude::*; use diesel_async::scoped_futures::ScopedFutureExt; -use diesel_async::{AsyncConnection, AsyncPgConnection}; +use diesel_async::{AsyncConnection, AsyncPgConnection, RunQueryDsl}; use secrecy::SecretString; use crate::app::App; @@ -11,8 +12,6 @@ use crate::util::errors::AppResult; use crate::models::{Crate, CrateOwner, Email, NewEmail, Owner, OwnerKind, Rights}; use crate::schema::{crate_owners, emails, users}; use crate::sql::lower; -use crate::util::diesel::prelude::*; -use crate::util::diesel::Conn; /// The model representing a row in the `users` database table. #[derive(Clone, Debug, PartialEq, Eq, Queryable, Identifiable, AsChangeset, Selectable)] @@ -31,27 +30,10 @@ pub struct User { impl User { pub async fn find(conn: &mut AsyncPgConnection, id: i32) -> QueryResult { - use diesel_async::RunQueryDsl; - users::table.find(id).first(conn).await } - pub fn find_by_login(conn: &mut impl Conn, login: &str) -> QueryResult { - use diesel::RunQueryDsl; - - users::table - .filter(lower(users::gh_login).eq(login.to_lowercase())) - .filter(users::gh_id.ne(-1)) - .order(users::gh_id.desc()) - .first(conn) - } - - pub async fn async_find_by_login( - conn: &mut AsyncPgConnection, - login: &str, - ) -> QueryResult { - use diesel_async::RunQueryDsl; - + pub async fn find_by_login(conn: &mut AsyncPgConnection, login: &str) -> QueryResult { users::table .filter(lower(users::gh_login).eq(login.to_lowercase())) .filter(users::gh_id.ne(-1)) @@ -61,8 +43,6 @@ impl User { } pub async fn owning(krate: &Crate, conn: &mut AsyncPgConnection) -> QueryResult> { - use diesel_async::RunQueryDsl; - let users = CrateOwner::by_owner_kind(OwnerKind::User) .inner_join(users::table) .select(User::as_select()) @@ -104,24 +84,10 @@ impl User { /// Queries the database for the verified emails /// belonging to a given user - pub fn verified_email(&self, conn: &mut impl Conn) -> QueryResult> { - use diesel::RunQueryDsl; - - Email::belonging_to(self) - .select(emails::email) - .filter(emails::verified.eq(true)) - .first(conn) - .optional() - } - - /// Queries the database for the verified emails - /// belonging to a given user - pub async fn async_verified_email( + pub async fn verified_email( &self, conn: &mut AsyncPgConnection, ) -> QueryResult> { - use diesel_async::RunQueryDsl; - Email::belonging_to(self) .select(emails::email) .filter(emails::verified.eq(true)) @@ -131,19 +97,7 @@ impl User { } /// Queries for the email belonging to a particular user - pub fn email(&self, conn: &mut impl Conn) -> QueryResult> { - use diesel::RunQueryDsl; - - Email::belonging_to(self) - .select(emails::email) - .first(conn) - .optional() - } - - /// Queries for the email belonging to a particular user - pub async fn async_email(&self, conn: &mut AsyncPgConnection) -> QueryResult> { - use diesel_async::RunQueryDsl; - + pub async fn email(&self, conn: &mut AsyncPgConnection) -> QueryResult> { Email::belonging_to(self) .select(emails::email) .first(conn) @@ -191,7 +145,6 @@ impl<'a> NewUser<'a> { use diesel::insert_into; use diesel::pg::upsert::excluded; use diesel::sql_types::Integer; - use diesel_async::RunQueryDsl; conn.transaction(|conn| { async move { @@ -239,7 +192,7 @@ impl<'a> NewUser<'a> { domain: &emails.domain, token, }; - let _ = emails.async_send(user_email, email).await; + let _ = emails.send(user_email, email).await; } } diff --git a/src/tests/issues/issue1205.rs b/src/tests/issues/issue1205.rs index afaeb290498..6038ac1fffb 100644 --- a/src/tests/issues/issue1205.rs +++ b/src/tests/issues/issue1205.rs @@ -26,7 +26,7 @@ async fn test_issue_1205() -> anyhow::Result<()> { assert_eq!(response.status(), StatusCode::OK); assert_snapshot!(response.text(), @r#"{"msg":"team github:rustaudio:owners has been added as an owner of crate deepspeech-sys","ok":true}"#); - let owners = krate.async_owners(&mut conn).await?; + let owners = krate.owners(&mut conn).await?; assert_eq!(owners.len(), 2); assert_eq!(owners[0].login(), "foo"); assert_eq!(owners[1].login(), "github:rustaudio:owners"); @@ -37,7 +37,7 @@ async fn test_issue_1205() -> anyhow::Result<()> { assert_eq!(response.status(), StatusCode::OK); assert_snapshot!(response.text(), @r#"{"msg":"team github:rustaudio:cratesio-push has been added as an owner of crate deepspeech-sys","ok":true}"#); - let owners = krate.async_owners(&mut conn).await?; + let owners = krate.owners(&mut conn).await?; assert_eq!(owners.len(), 2); assert_eq!(owners[0].login(), "foo"); assert_eq!(owners[1].login(), "github:rustaudio:cratesio-push"); diff --git a/src/tests/issues/issue2736.rs b/src/tests/issues/issue2736.rs index 95549adede0..4c845fee767 100644 --- a/src/tests/issues/issue2736.rs +++ b/src/tests/issues/issue2736.rs @@ -49,7 +49,7 @@ async fn test_issue_2736() -> anyhow::Result<()> { assert_ne!(github_ids[0], github_ids[1]); // - The new `foo` account is NOT an owner of the crate - let owners = krate.async_owners(&mut conn).await?; + let owners = krate.owners(&mut conn).await?; assert_eq!(owners.len(), 2); assert_none!(owners.iter().find(|o| o.id() == foo2.as_model().id)); @@ -58,7 +58,7 @@ async fn test_issue_2736() -> anyhow::Result<()> { assert_eq!(response.status(), StatusCode::OK); assert_snapshot!(response.text(), @r#"{"msg":"owners successfully removed","ok":true}"#); - let owners = krate.async_owners(&mut conn).await?; + let owners = krate.owners(&mut conn).await?; assert_eq!(owners.len(), 1); assert_eq!(owners[0].id(), someone_else.as_model().id); diff --git a/src/tests/owners.rs b/src/tests/owners.rs index 374b2b42052..2a2d942163c 100644 --- a/src/tests/owners.rs +++ b/src/tests/owners.rs @@ -236,7 +236,7 @@ async fn modify_multiple_owners() { .await; assert_eq!(response.status(), StatusCode::BAD_REQUEST); assert_snapshot!(response.text(), @r#"{"errors":[{"detail":"cannot remove all individual owners of a crate. Team member don't have permission to modify owners, so at least one individual owner is required."}]}"#); - assert_eq!(krate.async_owners(&mut conn).await.unwrap().len(), 3); + assert_eq!(krate.owners(&mut conn).await.unwrap().len(), 3); // Deleting two owners at once is allowed. let response = token @@ -244,7 +244,7 @@ async fn modify_multiple_owners() { .await; assert_eq!(response.status(), StatusCode::OK); assert_snapshot!(response.text(), @r#"{"msg":"owners successfully removed","ok":true}"#); - assert_eq!(krate.async_owners(&mut conn).await.unwrap().len(), 1); + assert_eq!(krate.owners(&mut conn).await.unwrap().len(), 1); // Adding multiple users fails if one of them already is an owner. let response = token @@ -252,7 +252,7 @@ async fn modify_multiple_owners() { .await; assert_eq!(response.status(), StatusCode::BAD_REQUEST); assert_snapshot!(response.text(), @r#"{"errors":[{"detail":"`foo` is already an owner"}]}"#); - assert_eq!(krate.async_owners(&mut conn).await.unwrap().len(), 1); + assert_eq!(krate.owners(&mut conn).await.unwrap().len(), 1); // Adding multiple users at once succeeds. let response = token @@ -270,7 +270,7 @@ async fn modify_multiple_owners() { .accept_ownership_invitation(&krate.name, krate.id) .await; - assert_eq!(krate.async_owners(&mut conn).await.unwrap().len(), 3); + assert_eq!(krate.owners(&mut conn).await.unwrap().len(), 3); } /// Testing the crate ownership between two crates and one team. @@ -286,7 +286,7 @@ async fn check_ownership_two_crates() { let user = user.as_model(); let team = new_team("team_foo") - .async_create_or_update(&mut conn) + .create_or_update(&mut conn) .await .unwrap(); let krate_owned_by_team = CrateBuilder::new("foo", user.id) @@ -326,7 +326,7 @@ async fn check_ownership_one_crate() { let user = user.as_model(); let team = new_team("github:test_org:team_sloth") - .async_create_or_update(&mut conn) + .create_or_update(&mut conn) .await .unwrap(); let krate = CrateBuilder::new("best_crate", user.id) @@ -360,7 +360,7 @@ async fn add_existing_team() { let user = user.as_model(); let t = new_team("github:test_org:bananas") - .async_create_or_update(&mut conn) + .create_or_update(&mut conn) .await .unwrap(); let krate = CrateBuilder::new("best_crate", user.id) diff --git a/src/tests/team.rs b/src/tests/team.rs index fb820bff1a3..bfd0d02b91d 100644 --- a/src/tests/team.rs +++ b/src/tests/team.rs @@ -115,7 +115,7 @@ async fn add_renamed_team() { .github_id(2001) .build(); - new_team.async_create_or_update(&mut conn).await.unwrap(); + new_team.create_or_update(&mut conn).await.unwrap(); assert_eq!( teams::table @@ -157,7 +157,7 @@ async fn add_team_mixed_case() { .first(&mut conn) .await .unwrap(); - let owners = krate.async_owners(&mut conn).await.unwrap(); + let owners = krate.owners(&mut conn).await.unwrap(); assert_eq!(owners.len(), 2); let owner = &owners[1]; assert_eq!(owner.login(), owner.login().to_lowercase()); @@ -187,7 +187,7 @@ async fn add_team_as_org_owner() { .first(&mut conn) .await .unwrap(); - let owners = krate.async_owners(&mut conn).await.unwrap(); + let owners = krate.owners(&mut conn).await.unwrap(); assert_eq!(owners.len(), 2); let owner = &owners[1]; assert_eq!(owner.login(), owner.login().to_lowercase()); @@ -465,7 +465,7 @@ async fn crates_by_team_id() { let user = user.as_model(); let t = new_team("github:test-org:team") - .async_create_or_update(&mut conn) + .create_or_update(&mut conn) .await .unwrap(); let krate = CrateBuilder::new("foo", user.id) @@ -492,7 +492,7 @@ async fn crates_by_team_id_not_including_deleted_owners() { .github_id(2001) .build(); - let t = new_team.async_create_or_update(&mut conn).await.unwrap(); + let t = new_team.create_or_update(&mut conn).await.unwrap(); let krate = CrateBuilder::new("foo", user.id) .expect_build(&mut conn) diff --git a/src/typosquat/database.rs b/src/typosquat/database.rs index 0f55afec4ab..b67e987bc0c 100644 --- a/src/typosquat/database.rs +++ b/src/typosquat/database.rs @@ -115,7 +115,7 @@ impl Crate { let krate = models::Crate::by_exact_name(name).first(conn).await?; let owners = krate - .async_owners(conn) + .owners(conn) .await? .into_iter() .map(Owner::from) diff --git a/src/typosquat/test_util.rs b/src/typosquat/test_util.rs index bb25d73092a..1e31ff17f51 100644 --- a/src/typosquat/test_util.rs +++ b/src/typosquat/test_util.rs @@ -37,7 +37,7 @@ pub mod faker { .name(team) .build(); - Ok(team.async_create_or_update(conn).await?) + Ok(team.create_or_update(conn).await?) } pub fn user(conn: &mut PgConnection, login: &str) -> QueryResult { diff --git a/src/worker/jobs/expiry_notification.rs b/src/worker/jobs/expiry_notification.rs index 8b6f3ddf0c6..a578c77e06d 100644 --- a/src/worker/jobs/expiry_notification.rs +++ b/src/worker/jobs/expiry_notification.rs @@ -75,7 +75,7 @@ async fn handle_expiring_token( let user = User::find(conn, token.user_id).await?; debug!("Looking up email address for user {}…", user.id); - let recipient = user.async_email(conn).await?; + let recipient = user.email(conn).await?; if let Some(recipient) = recipient { debug!("Sending expiry notification to {}…", recipient); let email = ExpiryNotificationEmail { @@ -84,7 +84,7 @@ async fn handle_expiring_token( token_name: &token.name, expiry_date: token.expired_at.unwrap().and_utc(), }; - emails.async_send(&recipient, email).await?; + emails.send(&recipient, email).await?; } else { info!( "User {} has no email address set. Skipping expiry notification.", diff --git a/src/worker/jobs/send_publish_notifications.rs b/src/worker/jobs/send_publish_notifications.rs index a21cb3d8183..ebacfcab385 100644 --- a/src/worker/jobs/send_publish_notifications.rs +++ b/src/worker/jobs/send_publish_notifications.rs @@ -95,7 +95,7 @@ impl BackgroundJob for SendPublishNotificationsJob { }; debug!("Sending publish notification for {krate}@{version} to {email_address}…"); - let result = ctx.emails.async_send(&email_address, email).await.inspect_err(|err| { + let result = ctx.emails.send(&email_address, email).await.inspect_err(|err| { warn!("Failed to send publish notification for {krate}@{version} to {email_address}: {err}") }); diff --git a/src/worker/jobs/sync_admins.rs b/src/worker/jobs/sync_admins.rs index a59e915ea3f..ebf688fc97d 100644 --- a/src/worker/jobs/sync_admins.rs +++ b/src/worker/jobs/sync_admins.rs @@ -144,7 +144,7 @@ impl BackgroundJob for SyncAdmins { for database_admin in &database_admins { let (_, _, email_address) = database_admin; if let Some(email_address) = email_address { - if let Err(error) = ctx.emails.async_send(email_address, email.clone()).await { + if let Err(error) = ctx.emails.send(email_address, email.clone()).await { warn!( "Failed to send email to admin {} ({}, github_id: {}): {}", database_admin.1, email_address, database_admin.0, error diff --git a/src/worker/jobs/typosquat.rs b/src/worker/jobs/typosquat.rs index 59ada026cfa..6882a2d37d9 100644 --- a/src/worker/jobs/typosquat.rs +++ b/src/worker/jobs/typosquat.rs @@ -64,7 +64,7 @@ async fn check( }; for recipient in cache.iter_emails() { - if let Err(error) = emails.async_send(recipient, email.clone()).await { + if let Err(error) = emails.send(recipient, email.clone()).await { error!( ?error, ?recipient,