mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-07 02:21:23 +00:00
usernames
This commit is contained in:
1 parent
998a7b60b1
commit
3a62afb53c
1 file changed
+57
-10
+57
-10
@@ -25,6 +25,18 @@ pub struct UserEmailChangeRow {
|
||||
pub ip_address: String,
|
||||
pub maybe_changed_by_user_token: Option<UserToken>,
|
||||
pub created_at: DateTime<Utc>,
|
||||
|
||||
// Denormalized display fields for the user whose email was changed.
|
||||
pub user_username: String,
|
||||
pub user_display_name: String,
|
||||
pub user_gravatar_hash: String,
|
||||
|
||||
// Denormalized display fields for the user who performed the change, if
|
||||
// there was one. NULL when `maybe_changed_by_user_token` is NULL or when
|
||||
// the referenced row has been hard-deleted.
|
||||
pub maybe_changed_by_user_username: Option<String>,
|
||||
pub maybe_changed_by_user_display_name: Option<String>,
|
||||
pub maybe_changed_by_user_gravatar_hash: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
@@ -36,9 +48,23 @@ struct RawUserEmailChangeRow {
|
||||
ip_address: String,
|
||||
maybe_changed_by_user_token: Option<UserToken>,
|
||||
created_at: NaiveDateTime,
|
||||
|
||||
user_username: String,
|
||||
user_display_name: String,
|
||||
user_gravatar_hash: String,
|
||||
|
||||
maybe_changed_by_user_username: Option<String>,
|
||||
maybe_changed_by_user_display_name: Option<String>,
|
||||
maybe_changed_by_user_gravatar_hash: Option<String>,
|
||||
}
|
||||
|
||||
/// Return all `user_email_changes` rows for the given user, newest first.
|
||||
///
|
||||
/// Joins `users` twice to denormalize the username, display name, and
|
||||
/// gravatar hash for both the subject (`user_token`) and the acting user
|
||||
/// (`maybe_changed_by_user_token`). The actor join is a LEFT JOIN so rows
|
||||
/// where there is no acting user (e.g. self-service changes) still come
|
||||
/// back.
|
||||
pub async fn list_user_email_changes_for_user<'e, 'c: 'e, E>(
|
||||
args: ListUserEmailChangesForUserArgs<'e, 'c, E>,
|
||||
) -> Result<Vec<UserEmailChangeRow>, sqlx::Error>
|
||||
@@ -49,16 +75,29 @@ where
|
||||
RawUserEmailChangeRow,
|
||||
r#"
|
||||
SELECT
|
||||
id as `id: u64`,
|
||||
user_token as `user_token: tokens::tokens::users::UserToken`,
|
||||
old_email,
|
||||
new_email,
|
||||
ip_address,
|
||||
maybe_changed_by_user_token as `maybe_changed_by_user_token: tokens::tokens::users::UserToken`,
|
||||
created_at
|
||||
FROM user_email_changes
|
||||
WHERE user_token = ?
|
||||
ORDER BY id DESC
|
||||
uec.id as `id: u64`,
|
||||
uec.user_token as `user_token: tokens::tokens::users::UserToken`,
|
||||
uec.old_email,
|
||||
uec.new_email,
|
||||
uec.ip_address,
|
||||
uec.maybe_changed_by_user_token as `maybe_changed_by_user_token: tokens::tokens::users::UserToken`,
|
||||
uec.created_at,
|
||||
|
||||
u_subject.username as user_username,
|
||||
u_subject.display_name as user_display_name,
|
||||
u_subject.email_gravatar_hash as user_gravatar_hash,
|
||||
|
||||
u_changer.username as `maybe_changed_by_user_username?`,
|
||||
u_changer.display_name as `maybe_changed_by_user_display_name?`,
|
||||
u_changer.email_gravatar_hash as `maybe_changed_by_user_gravatar_hash?`
|
||||
|
||||
FROM user_email_changes AS uec
|
||||
JOIN users AS u_subject
|
||||
ON uec.user_token = u_subject.token
|
||||
LEFT JOIN users AS u_changer
|
||||
ON uec.maybe_changed_by_user_token = u_changer.token
|
||||
WHERE uec.user_token = ?
|
||||
ORDER BY uec.id DESC
|
||||
"#,
|
||||
args.user_token.as_str(),
|
||||
)
|
||||
@@ -74,6 +113,14 @@ ORDER BY id DESC
|
||||
ip_address: row.ip_address,
|
||||
maybe_changed_by_user_token: row.maybe_changed_by_user_token,
|
||||
created_at: row.created_at.and_utc(),
|
||||
|
||||
user_username: row.user_username,
|
||||
user_display_name: row.user_display_name,
|
||||
user_gravatar_hash: row.user_gravatar_hash,
|
||||
|
||||
maybe_changed_by_user_username: row.maybe_changed_by_user_username,
|
||||
maybe_changed_by_user_display_name: row.maybe_changed_by_user_display_name,
|
||||
maybe_changed_by_user_gravatar_hash: row.maybe_changed_by_user_gravatar_hash,
|
||||
}
|
||||
}).collect();
|
||||
|
||||
|
||||
Reference in new issue
Block a user