Skip to content

Commit e08605e

Browse files
committed
Auto merge of #1926 - integer32llc:fix-master, r=carols10cents
Revert "Auto merge of #1911 - hbina:remove_email_from_user_struct, r=… …carols10cents" This reverts commit 92edac3, reversing changes made to 4df7001. I missed a spot when reviewing #1911. This reverts that merge so that master is deployable again; I'm going to self-r+ this and then open a new PR with #1911 and a fix on it and have someone else review that.
2 parents 92edac3 + 86a7062 commit e08605e

File tree

12 files changed

+51
-142
lines changed

12 files changed

+51
-142
lines changed

src/bin/transfer-crates.rs

+3-8
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
use cargo_registry::{
99
db,
10-
models::{user, Crate, OwnerKind, User},
10+
models::{Crate, OwnerKind, User},
1111
schema::{crate_owners, crates, users},
1212
};
1313
use std::{
@@ -16,7 +16,6 @@ use std::{
1616
process::exit,
1717
};
1818

19-
use cargo_registry::models::user::UserNoEmailType;
2019
use diesel::prelude::*;
2120

2221
fn main() {
@@ -45,16 +44,12 @@ fn transfer(conn: &PgConnection) {
4544
};
4645

4746
let from = users::table
48-
.select(user::ALL_COLUMNS)
4947
.filter(users::gh_login.eq(from))
50-
.first::<UserNoEmailType>(conn)
51-
.map(User::from)
48+
.first::<User>(conn)
5249
.unwrap();
5350
let to = users::table
54-
.select(user::ALL_COLUMNS)
5551
.filter(users::gh_login.eq(to))
56-
.first::<UserNoEmailType>(conn)
57-
.map(User::from)
52+
.first::<User>(conn)
5853
.unwrap();
5954

6055
if from.gh_id != to.gh_id {

src/controllers/krate/metadata.rs

+10-12
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,9 @@
55
//! `Cargo.toml` file.
66
77
use crate::controllers::prelude::*;
8-
use crate::models::user;
9-
use crate::models::user::UserNoEmailType;
108
use crate::models::{
119
Category, Crate, CrateCategory, CrateKeyword, CrateVersions, Keyword, RecentCrateDownloads,
12-
Version,
10+
User, Version,
1311
};
1412
use crate::schema::*;
1513
use crate::views::{
@@ -107,10 +105,10 @@ pub fn show(req: &mut dyn Request) -> CargoResult<Response> {
107105
let conn = req.db_conn()?;
108106
let krate = Crate::by_name(name).first::<Crate>(&*conn)?;
109107

110-
let mut versions_and_publishers: Vec<(Version, Option<UserNoEmailType>)> = krate
108+
let mut versions_and_publishers: Vec<(Version, Option<User>)> = krate
111109
.all_versions()
112110
.left_outer_join(users::table)
113-
.select((versions::all_columns, user::ALL_COLUMNS.nullable()))
111+
.select((versions::all_columns, users::all_columns.nullable()))
114112
.load(&*conn)?;
115113
versions_and_publishers.sort_by(|a, b| b.0.num.cmp(&a.0.num));
116114
let ids = versions_and_publishers.iter().map(|v| v.0.id).collect();
@@ -153,7 +151,7 @@ pub fn show(req: &mut dyn Request) -> CargoResult<Response> {
153151
),
154152
versions: versions_and_publishers
155153
.into_iter()
156-
.map(|(v, pb)| v.encodable(&krate.name, pb.map(From::from)))
154+
.map(|(v, pb)| v.encodable(&krate.name, pb))
157155
.collect(),
158156
keywords: kws.into_iter().map(Keyword::encodable).collect(),
159157
categories: cats.into_iter().map(Category::encodable).collect(),
@@ -189,15 +187,15 @@ pub fn versions(req: &mut dyn Request) -> CargoResult<Response> {
189187
let crate_name = &req.params()["crate_id"];
190188
let conn = req.db_conn()?;
191189
let krate = Crate::by_name(crate_name).first::<Crate>(&*conn)?;
192-
let mut versions_and_publishers: Vec<(Version, Option<UserNoEmailType>)> = krate
190+
let mut versions_and_publishers: Vec<(Version, Option<User>)> = krate
193191
.all_versions()
194192
.left_outer_join(users::table)
195-
.select((versions::all_columns, user::ALL_COLUMNS.nullable()))
193+
.select((versions::all_columns, users::all_columns.nullable()))
196194
.load(&*conn)?;
197195
versions_and_publishers.sort_by(|a, b| b.0.num.cmp(&a.0.num));
198196
let versions = versions_and_publishers
199197
.into_iter()
200-
.map(|(v, pb)| v.encodable(crate_name, pb.map(From::from)))
198+
.map(|(v, pb)| v.encodable(crate_name, pb))
201199
.collect();
202200

203201
#[derive(Serialize)]
@@ -229,11 +227,11 @@ pub fn reverse_dependencies(req: &mut dyn Request) -> CargoResult<Response> {
229227
.select((
230228
versions::all_columns,
231229
crates::name,
232-
user::ALL_COLUMNS.nullable(),
230+
users::all_columns.nullable(),
233231
))
234-
.load::<(Version, String, Option<UserNoEmailType>)>(&*conn)?
232+
.load::<(Version, String, Option<User>)>(&*conn)?
235233
.into_iter()
236-
.map(|(version, krate_name, user)| version.encodable(&krate_name, user.map(From::from)))
234+
.map(|(version, krate_name, published_by)| version.encodable(&krate_name, published_by))
237235
.collect();
238236

239237
#[derive(Serialize)]

src/controllers/user/me.rs

+11-13
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ use crate::email;
77
use crate::util::bad_request;
88
use crate::util::errors::CargoError;
99

10-
use crate::models::user::{UserNoEmailType, ALL_COLUMNS};
1110
use crate::models::{CrateOwner, Email, Follow, NewEmail, OwnerKind, User, Version};
1211
use crate::schema::{crate_owners, crates, emails, follows, users, versions};
1312
use crate::views::{EncodableMe, EncodableVersion, OwnedCrate};
@@ -32,12 +31,12 @@ pub fn me(req: &mut dyn Request) -> CargoResult<Response> {
3231
.find(user_id)
3332
.left_join(emails::table)
3433
.select((
35-
ALL_COLUMNS,
34+
users::all_columns,
3635
emails::verified.nullable(),
3736
emails::email.nullable(),
3837
emails::token_generated_at.nullable().is_not_null(),
3938
))
40-
.first::<(UserNoEmailType, Option<bool>, Option<String>, bool)>(&*conn)?;
39+
.first::<(User, Option<bool>, Option<String>, bool)>(&*conn)?;
4140

4241
let owned_crates = crate_owners::table
4342
.inner_join(crates::table)
@@ -56,13 +55,10 @@ pub fn me(req: &mut dyn Request) -> CargoResult<Response> {
5655

5756
let verified = verified.unwrap_or(false);
5857
let verification_sent = verified || verification_sent;
59-
// PR :: https://github.com/rust-lang/crates.io/pull/1891
60-
// Will modify this so that we don't need this kind of conversion anymore...
61-
// In fact, the PR will use the email that we obtained from the above SQL queries
62-
// and pass it along the encodable_private function below.
58+
let user = User { email, ..user };
6359

6460
Ok(req.json(&EncodableMe {
65-
user: User::from(user).encodable_private(email, verified, verification_sent),
61+
user: user.encodable_private(verified, verification_sent),
6662
owned_crates,
6763
}))
6864
}
@@ -80,17 +76,19 @@ pub fn updates(req: &mut dyn Request) -> CargoResult<Response> {
8076
.left_outer_join(users::table)
8177
.filter(crates::id.eq(any(followed_crates)))
8278
.order(versions::created_at.desc())
83-
.select((versions::all_columns, crates::name, ALL_COLUMNS.nullable()))
79+
.select((
80+
versions::all_columns,
81+
crates::name,
82+
users::all_columns.nullable(),
83+
))
8484
.paginate(&req.query())?
85-
.load::<(Version, String, Option<UserNoEmailType>)>(&*conn)?;
85+
.load::<(Version, String, Option<User>)>(&*conn)?;
8686

8787
let more = data.next_page_params().is_some();
8888

8989
let versions = data
9090
.into_iter()
91-
.map(|(version, crate_name, published_by)| {
92-
version.encodable(&crate_name, published_by.map(From::from))
93-
})
91+
.map(|(version, crate_name, published_by)| version.encodable(&crate_name, published_by))
9492
.collect();
9593

9694
#[derive(Serialize)]

src/controllers/user/other.rs

+2-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
use crate::controllers::prelude::*;
22

3-
use crate::models::user;
4-
use crate::models::user::UserNoEmailType;
53
use crate::models::{OwnerKind, User};
64
use crate::schema::{crate_owners, crates, users};
75
use crate::views::EncodablePublicUser;
@@ -13,17 +11,16 @@ pub fn show(req: &mut dyn Request) -> CargoResult<Response> {
1311
let name = &req.params()["user_id"].to_lowercase();
1412
let conn = req.db_conn()?;
1513
let user = users
16-
.select(user::ALL_COLUMNS)
1714
.filter(crate::lower(gh_login).eq(name))
1815
.order(id.desc())
19-
.first::<UserNoEmailType>(&*conn)?;
16+
.first::<User>(&*conn)?;
2017

2118
#[derive(Serialize)]
2219
struct R {
2320
user: EncodablePublicUser,
2421
}
2522
Ok(req.json(&R {
26-
user: User::from(user).encodable_public(),
23+
user: user.encodable_public(),
2724
}))
2825
}
2926

src/controllers/user/session.rs

+3-6
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ use crate::github;
44
use conduit_cookie::RequestSession;
55
use oauth2::{prelude::*, AuthorizationCode, TokenResponse};
66

7-
use crate::models::user;
8-
use crate::models::user::UserNoEmailType;
97
use crate::models::{NewUser, User};
108
use crate::schema::users;
119
use crate::util::errors::{CargoError, ReadOnlyMode};
@@ -132,11 +130,10 @@ impl GithubUser {
132130
// just look for an existing user
133131
if e.is::<ReadOnlyMode>() {
134132
users::table
135-
.select(user::ALL_COLUMNS)
136133
.filter(users::gh_id.eq(self.id))
137-
.first::<UserNoEmailType>(conn)
138-
.map(User::from)
139-
.map_err(|_| e)
134+
.first(conn)
135+
.optional()?
136+
.ok_or(e)
140137
} else {
141138
Err(e)
142139
}

src/controllers/version/deprecated.rs

+7-11
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@
77
88
use crate::controllers::prelude::*;
99

10-
use crate::models::user;
11-
use crate::models::user::UserNoEmailType;
12-
use crate::models::{Crate, Version};
10+
use crate::models::{Crate, User, Version};
1311
use crate::schema::*;
1412
use crate::views::EncodableVersion;
1513

@@ -30,14 +28,12 @@ pub fn index(req: &mut dyn Request) -> CargoResult<Response> {
3028
.select((
3129
versions::all_columns,
3230
crates::name,
33-
user::ALL_COLUMNS.nullable(),
31+
users::all_columns.nullable(),
3432
))
3533
.filter(versions::id.eq(any(ids)))
36-
.load::<(Version, String, Option<UserNoEmailType>)>(&*conn)?
34+
.load::<(Version, String, Option<User>)>(&*conn)?
3735
.into_iter()
38-
.map(|(version, crate_name, published_by)| {
39-
version.encodable(&crate_name, published_by.map(From::from))
40-
})
36+
.map(|(version, crate_name, published_by)| version.encodable(&crate_name, published_by))
4137
.collect();
4238

4339
#[derive(Serialize)]
@@ -54,14 +50,14 @@ pub fn show_by_id(req: &mut dyn Request) -> CargoResult<Response> {
5450
let id = &req.params()["version_id"];
5551
let id = id.parse().unwrap_or(0);
5652
let conn = req.db_conn()?;
57-
let (version, krate, published_by): (Version, Crate, Option<UserNoEmailType>) = versions::table
53+
let (version, krate, published_by): (Version, Crate, Option<User>) = versions::table
5854
.find(id)
5955
.inner_join(crates::table)
6056
.left_outer_join(users::table)
6157
.select((
6258
versions::all_columns,
6359
crate::models::krate::ALL_COLUMNS,
64-
user::ALL_COLUMNS.nullable(),
60+
users::all_columns.nullable(),
6561
))
6662
.first(&*conn)?;
6763

@@ -70,6 +66,6 @@ pub fn show_by_id(req: &mut dyn Request) -> CargoResult<Response> {
7066
version: EncodableVersion,
7167
}
7268
Ok(req.json(&R {
73-
version: version.encodable(&krate.name, published_by.map(From::from)),
69+
version: version.encodable(&krate.name, published_by),
7470
}))
7571
}

src/middleware/current_user.rs

+1-5
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ 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, ALL_COLUMNS};
109
use crate::models::User;
1110
use crate::schema::users;
1211

@@ -32,10 +31,7 @@ impl Middleware for CurrentUser {
3231

3332
if let Some(id) = id {
3433
// If it did, look for a user in the database with the given `user_id`
35-
let maybe_user = users::table
36-
.select(ALL_COLUMNS)
37-
.find(id)
38-
.first::<UserNoEmailType>(&*conn);
34+
let maybe_user = users::table.find(id).first::<User>(&*conn);
3935
drop(conn);
4036
if let Ok(user) = maybe_user {
4137
// Attach the `User` model from the database to the request

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 mod user;
34+
mod user;
3535
mod version;

src/models/krate.rs

+2-5
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ use url::Url;
88

99
use crate::app::App;
1010
use crate::email;
11-
use crate::models::user;
12-
use crate::models::user::UserNoEmailType;
1311
use crate::util::{human, CargoResult};
1412

1513
use crate::models::{
@@ -401,10 +399,9 @@ impl Crate {
401399
let users = CrateOwner::by_owner_kind(OwnerKind::User)
402400
.filter(crate_owners::crate_id.eq(self.id))
403401
.inner_join(users::table)
404-
.select(user::ALL_COLUMNS)
405-
.load::<UserNoEmailType>(conn)?
402+
.select(users::all_columns)
403+
.load(conn)?
406404
.into_iter()
407-
.map(User::from)
408405
.map(Owner::User);
409406
let teams = CrateOwner::by_owner_kind(OwnerKind::Team)
410407
.filter(crate_owners::crate_id.eq(self.id))

src/models/owner.rs

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

8-
use crate::models::user::{UserNoEmailType, ALL_COLUMNS};
98
use crate::models::{Crate, Team, User};
109
use crate::schema::{crate_owners, users};
1110
use crate::views::EncodableOwner;
@@ -72,10 +71,8 @@ impl Owner {
7271
)?))
7372
} else {
7473
users::table
75-
.select(ALL_COLUMNS)
7674
.filter(users::gh_login.eq(name))
77-
.first::<UserNoEmailType>(conn)
78-
.map(User::from)
75+
.first(conn)
7976
.map(Owner::User)
8077
.map_err(|_| human(&format_args!("could not find user with login `{}`", name)))
8178
}

0 commit comments

Comments
 (0)