From 8a2a0c5e0cbd34628bf53a54d279f46666da51e2 Mon Sep 17 00:00:00 2001 From: Tobias Bieniek Date: Tue, 11 Feb 2025 13:02:19 +0100 Subject: [PATCH] model/owner: Extract `CrateOwner::from_invite()` fn --- src/models/crate_owner_invitation.rs | 10 ++-------- src/models/owner.rs | 12 +++++++++++- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/models/crate_owner_invitation.rs b/src/models/crate_owner_invitation.rs index 94c5be77643..576fd53c8f4 100644 --- a/src/models/crate_owner_invitation.rs +++ b/src/models/crate_owner_invitation.rs @@ -6,7 +6,7 @@ use http::StatusCode; use secrecy::SecretString; use crate::config; -use crate::models::{CrateOwner, OwnerKind}; +use crate::models::CrateOwner; use crate::schema::{crate_owner_invitations, crate_owners, crates}; use crate::util::errors::{custom, AppResult}; @@ -131,13 +131,7 @@ impl CrateOwnerInvitation { conn.transaction(|conn| { async move { diesel::insert_into(crate_owners::table) - .values(&CrateOwner { - crate_id: self.crate_id, - owner_id: self.invited_user_id, - created_by: self.invited_by_user_id, - owner_kind: OwnerKind::User, - email_notifications: true, - }) + .values(CrateOwner::from_invite(&self)) .on_conflict(crate_owners::table.primary_key()) .do_update() .set(crate_owners::deleted.eq(false)) diff --git a/src/models/owner.rs b/src/models/owner.rs index 12d2ae45569..147a43fc732 100644 --- a/src/models/owner.rs +++ b/src/models/owner.rs @@ -4,7 +4,7 @@ use diesel::pg::Pg; use diesel::prelude::*; use diesel_async::AsyncPgConnection; -use crate::models::{Crate, Team, User}; +use crate::models::{Crate, CrateOwnerInvitation, Team, User}; use crate::schema::crate_owners; use crates_io_diesel_helpers::pg_enum; @@ -36,6 +36,16 @@ impl CrateOwner { .filter(crate_owners::owner_kind.eq(kind)) .into_boxed() } + + pub fn from_invite(invite: &CrateOwnerInvitation) -> Self { + Self { + crate_id: invite.crate_id, + owner_id: invite.invited_user_id, + created_by: invite.invited_by_user_id, + owner_kind: OwnerKind::User, + email_notifications: true, + } + } } pg_enum! {