Skip to content

Commit 974caff

Browse files
committed
user: Move has_tokens property from user to a meta object
1 parent 099e402 commit 974caff

File tree

4 files changed

+15
-8
lines changed

4 files changed

+15
-8
lines changed

src/controllers/user/me.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use crate::models::{
1010
ApiToken, CrateOwner, Email, Follow, NewEmail, OwnerKind, User, Version, VersionOwnerAction,
1111
};
1212
use crate::schema::{api_tokens, crate_owners, crates, emails, follows, users, versions};
13-
use crate::views::{EncodableMe, EncodableVersion, OwnedCrate};
13+
use crate::views::{EncodableMe, EncodableMeMeta, EncodableVersion, OwnedCrate};
1414

1515
/// Handles the `GET /me` route.
1616
pub fn me(req: &mut dyn RequestExt) -> EndpointResult {
@@ -52,8 +52,9 @@ pub fn me(req: &mut dyn RequestExt) -> EndpointResult {
5252
let verified = verified.unwrap_or(false);
5353
let verification_sent = verified || verification_sent;
5454
Ok(req.json(&EncodableMe {
55-
user: user.encodable_private(email, verified, verification_sent, has_tokens),
55+
user: user.encodable_private(email, verified, verification_sent),
5656
owned_crates,
57+
meta: EncodableMeMeta { has_tokens },
5758
}))
5859
}
5960

src/models/user.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,6 @@ impl User {
174174
email: Option<String>,
175175
email_verified: bool,
176176
email_verification_sent: bool,
177-
has_tokens: bool,
178177
) -> EncodablePrivateUser {
179178
let User {
180179
id,
@@ -190,7 +189,6 @@ impl User {
190189
email,
191190
email_verified,
192191
email_verification_sent,
193-
has_tokens,
194192
avatar: gh_avatar,
195193
login: gh_login,
196194
name,

src/tests/user.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ use crate::{
77
use cargo_registry::{
88
models::{ApiToken, Email, NewUser, User},
99
schema::crate_owners,
10-
views::{EncodablePrivateUser, EncodablePublicUser, EncodableVersion, OwnedCrate},
10+
views::{
11+
EncodableMeMeta, EncodablePrivateUser, EncodablePublicUser, EncodableVersion, OwnedCrate,
12+
},
1113
};
1214

1315
use diesel::prelude::*;
@@ -27,6 +29,7 @@ pub struct UserShowPublicResponse {
2729
pub struct UserShowPrivateResponse {
2830
pub user: EncodablePrivateUser,
2931
pub owned_crates: Vec<OwnedCrate>,
32+
pub meta: EncodableMeMeta,
3033
}
3134

3235
#[derive(Deserialize)]
@@ -754,7 +757,7 @@ fn shows_that_user_has_tokens() {
754757
let (app, _, user) = TestApp::init().with_user();
755758

756759
let json = user.show_me();
757-
assert!(!json.user.has_tokens);
760+
assert!(!json.meta.has_tokens);
758761

759762
let user_id = user.as_model().id;
760763
app.db(|conn| {
@@ -765,5 +768,5 @@ fn shows_that_user_has_tokens() {
765768
});
766769

767770
let json = user.show_me();
768-
assert!(json.user.has_tokens);
771+
assert!(json.meta.has_tokens);
769772
}

src/views.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,12 @@ pub struct OwnedCrate {
161161
pub struct EncodableMe {
162162
pub user: EncodablePrivateUser,
163163
pub owned_crates: Vec<OwnedCrate>,
164+
pub meta: EncodableMeMeta,
165+
}
166+
167+
#[derive(Serialize, Deserialize, Debug, Clone, Copy)]
168+
pub struct EncodableMeMeta {
169+
pub has_tokens: bool,
164170
}
165171

166172
/// The serialization format for the `User` model.
@@ -176,7 +182,6 @@ pub struct EncodablePrivateUser {
176182
pub email: Option<String>,
177183
pub avatar: Option<String>,
178184
pub url: Option<String>,
179-
pub has_tokens: bool,
180185
}
181186

182187
/// The serialization format for the `User` model.

0 commit comments

Comments
 (0)