Skip to content

Commit f5a9d0b

Browse files
committed
Auto merge of #3168 - Turbo87:encodable-invitation, r=pietroalbini
CrateOwnerInvitation: Replace `encodable()` method This PR is similar to #3134 and brings us one step closer to removing the `models -> views` dependency by inverting the relationship for the `CrateOwnerInvitation` model and `EncodableCrateOwnerInvitation` view. r? `@pietroalbini`
2 parents d7800dd + ff0c979 commit f5a9d0b

File tree

3 files changed

+15
-13
lines changed

3 files changed

+15
-13
lines changed

src/controllers/crate_owner_invitation.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ pub fn list(req: &mut dyn RequestExt) -> EndpointResult {
1414
.load(&*conn)?;
1515
let crate_owner_invitations = crate_owner_invitations
1616
.into_iter()
17-
.map(|i| i.encodable(conn))
17+
.map(|i| EncodableCrateOwnerInvitation::from(i, conn))
1818
.collect();
1919

2020
#[derive(Serialize)]

src/models/crate_owner_invitation.rs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ use chrono::NaiveDateTime;
22
use diesel::prelude::*;
33

44
use crate::schema::{crate_owner_invitations, crates, users};
5-
use crate::views::EncodableCrateOwnerInvitation;
65

76
/// The model representing a row in the `crate_owner_invitations` database table.
87
#[derive(Clone, Debug, PartialEq, Eq, Identifiable, Queryable)]
@@ -40,13 +39,4 @@ impl CrateOwnerInvitation {
4039
.first(&*conn)
4140
.unwrap_or_else(|_| String::from("(unknown crate name)"))
4241
}
43-
44-
pub fn encodable(self, conn: &PgConnection) -> EncodableCrateOwnerInvitation {
45-
EncodableCrateOwnerInvitation {
46-
invited_by_username: self.invited_by_username(conn),
47-
crate_name: self.crate_name(conn),
48-
crate_id: self.crate_id,
49-
created_at: self.created_at,
50-
}
51-
}
5242
}

src/views.rs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
use chrono::NaiveDateTime;
2+
use diesel::PgConnection;
23
use std::collections::HashMap;
34

45
use crate::github;
56
use crate::models::{
6-
Badge, Category, CreatedApiToken, Dependency, DependencyKind, Keyword, Owner,
7-
ReverseDependency, Team, User, VersionDownload,
7+
Badge, Category, CrateOwnerInvitation, CreatedApiToken, Dependency, DependencyKind, Keyword,
8+
Owner, ReverseDependency, Team, User, VersionDownload,
89
};
910
use crate::util::rfc3339;
1011

@@ -76,6 +77,17 @@ pub struct EncodableCrateOwnerInvitation {
7677
pub created_at: NaiveDateTime,
7778
}
7879

80+
impl EncodableCrateOwnerInvitation {
81+
pub fn from(invitation: CrateOwnerInvitation, conn: &PgConnection) -> Self {
82+
Self {
83+
invited_by_username: invitation.invited_by_username(conn),
84+
crate_name: invitation.crate_name(conn),
85+
crate_id: invitation.crate_id,
86+
created_at: invitation.created_at,
87+
}
88+
}
89+
}
90+
7991
#[derive(Deserialize, Serialize, Debug, Copy, Clone)]
8092
pub struct InvitationResponse {
8193
pub crate_id: i32,

0 commit comments

Comments
 (0)