Skip to content

Commit e1d9500

Browse files
committed
Couple more changes to usages of User
Uses the new type that does not the email variable which will be dropped from the table soon.
1 parent 55fcd6b commit e1d9500

File tree

7 files changed

+30
-24
lines changed

7 files changed

+30
-24
lines changed

src/controllers/krate/metadata.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
//! `Cargo.toml` file.
66
77
use crate::controllers::prelude::*;
8-
use crate::models::user::{UserNoEmailType, USER_NO_EMAIL};
8+
use crate::models::user;
9+
use crate::models::user::UserNoEmailType;
910
use crate::models::{
1011
Category, Crate, CrateCategory, CrateKeyword, CrateVersions, Keyword, RecentCrateDownloads,
1112
User, Version,
@@ -231,7 +232,7 @@ pub fn reverse_dependencies(req: &mut dyn Request) -> CargoResult<Response> {
231232
.select((
232233
versions::all_columns,
233234
crates::name,
234-
USER_NO_EMAIL.nullable(),
235+
user::ALL_COLUMNS.nullable(),
235236
))
236237
.load::<(Version, String, Option<UserNoEmailType>)>(&*conn)?
237238
.into_iter()

src/controllers/user/me.rs

+3-7
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use crate::email;
55
use crate::util::bad_request;
66
use crate::util::errors::CargoError;
77

8-
use crate::models::user::{UserNoEmailType, USER_NO_EMAIL};
8+
use crate::models::user::{UserNoEmailType, ALL_COLUMNS};
99
use crate::models::{Email, Follow, NewEmail, User, Version};
1010
use crate::schema::{crates, emails, follows, users, versions};
1111
use crate::views::{EncodableMe, EncodableVersion};
@@ -30,7 +30,7 @@ pub fn me(req: &mut dyn Request) -> CargoResult<Response> {
3030
.find(id)
3131
.left_join(emails::table)
3232
.select((
33-
USER_NO_EMAIL,
33+
ALL_COLUMNS,
3434
emails::verified.nullable(),
3535
emails::email.nullable(),
3636
emails::token_generated_at.nullable().is_not_null(),
@@ -71,11 +71,7 @@ pub fn updates(req: &mut dyn Request) -> CargoResult<Response> {
7171
.left_outer_join(users::table)
7272
.filter(crates::id.eq(any(followed_crates)))
7373
.order(versions::created_at.desc())
74-
.select((
75-
versions::all_columns,
76-
crates::name,
77-
USER_NO_EMAIL.nullable(),
78-
))
74+
.select((versions::all_columns, crates::name, ALL_COLUMNS.nullable()))
7975
.paginate(&req.query())?
8076
.load::<(Version, String, Option<UserNoEmailType>)>(&*conn)?;
8177

src/middleware/current_user.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use diesel::prelude::*;
66
use crate::db::RequestTransaction;
77
use crate::util::errors::{std_error, CargoResult, ChainError, Unauthorized};
88

9-
use crate::models::user::{UserNoEmailType, USER_NO_EMAIL};
9+
use crate::models::user::{UserNoEmailType, ALL_COLUMNS};
1010
use crate::models::User;
1111
use crate::schema::users;
1212

@@ -33,7 +33,7 @@ impl Middleware for CurrentUser {
3333
if let Some(id) = id {
3434
// If it did, look for a user in the database with the given `user_id`
3535
let maybe_user = users::table
36-
.select(USER_NO_EMAIL)
36+
.select(ALL_COLUMNS)
3737
.find(id)
3838
.first::<UserNoEmailType>(&*conn);
3939
drop(conn);

src/models.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,5 @@ mod owner;
3131
mod rights;
3232
mod team;
3333
mod token;
34-
pub(crate) mod user;
34+
pub mod user;
3535
mod version;

src/models/krate.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ use indexmap::IndexMap;
77
use url::Url;
88

99
use crate::app::App;
10-
use crate::models::user::{UserNoEmailType, USER_NO_EMAIL};
10+
use crate::models::user;
11+
use crate::models::user::UserNoEmailType;
1112
use crate::util::{human, CargoResult};
1213

1314
use crate::models::{
@@ -400,19 +401,18 @@ impl Crate {
400401
Ok(Version::max(vs))
401402
}
402403

403-
// FIXME :: This function takes the result from user table so we must check
404-
// if its using the email variable...
405404
pub fn owners(&self, conn: &PgConnection) -> CargoResult<Vec<Owner>> {
406405
let base_query = CrateOwner::belonging_to(self).filter(crate_owners::deleted.eq(false));
407406
let users = base_query
408407
.inner_join(users::table)
409-
.select(USER_NO_EMAIL)
408+
.select(user::ALL_COLUMNS)
410409
.filter(crate_owners::owner_kind.eq(OwnerKind::User as i32))
411410
.load::<UserNoEmailType>(conn)?
412411
.into_iter()
413412
.map(|user| User {
414413
id: user.0,
415-
email: None,
414+
email: None, // <-- Because user _should not_ contain the email column.
415+
// This hack should be fixed in the future.
416416
gh_access_token: user.1,
417417
gh_login: user.2,
418418
name: user.3,

src/models/owner.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::app::App;
44
use crate::github;
55
use crate::util::{human, CargoResult};
66

7-
use crate::models::user::{UserNoEmailType, USER_NO_EMAIL};
7+
use crate::models::user::{UserNoEmailType, ALL_COLUMNS};
88
use crate::models::{Crate, Team, User};
99
use crate::schema::{crate_owners, users};
1010
use crate::views::EncodableOwner;
@@ -55,7 +55,7 @@ impl Owner {
5555
)?))
5656
} else {
5757
users::table
58-
.select(USER_NO_EMAIL)
58+
.select(ALL_COLUMNS)
5959
.filter(users::gh_login.eq(name))
6060
.first::<UserNoEmailType>(conn)
6161
.map(|user| User {

src/models/user.rs

+14-5
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ pub type UserNoEmailType = (
4949
i32,
5050
);
5151

52-
pub type UserNoEmail = (
52+
pub type AllColumns = (
5353
users::id,
5454
users::gh_access_token,
5555
users::gh_login,
@@ -58,7 +58,7 @@ pub type UserNoEmail = (
5858
users::gh_id,
5959
);
6060

61-
pub const USER_NO_EMAIL: UserNoEmail = (
61+
pub const ALL_COLUMNS: AllColumns = (
6262
users::id,
6363
users::gh_access_token,
6464
users::gh_login,
@@ -116,7 +116,7 @@ impl<'a> NewUser<'a> {
116116
.get_result::<User>(conn)?;
117117

118118
// To send the user an account verification email...
119-
if let Some(user_email) = user.email.as_ref() {
119+
if let Some(user_email) = self.email {
120120
let new_email = NewEmail {
121121
user_id: user.id,
122122
email: user_email,
@@ -167,10 +167,19 @@ impl User {
167167
let base_query = CrateOwner::belonging_to(krate).filter(crate_owners::deleted.eq(false));
168168
let users = base_query
169169
.inner_join(users::table)
170-
.select(users::all_columns)
170+
.select(ALL_COLUMNS)
171171
.filter(crate_owners::owner_kind.eq(OwnerKind::User as i32))
172-
.load(conn)?
172+
.load::<UserNoEmailType>(conn)?
173173
.into_iter()
174+
.map(|user| User {
175+
id: user.0,
176+
email: None,
177+
gh_access_token: user.1,
178+
gh_login: user.2,
179+
name: user.3,
180+
gh_avatar: user.4,
181+
gh_id: user.5,
182+
})
174183
.map(Owner::User);
175184

176185
Ok(users.collect())

0 commit comments

Comments
 (0)