From 04d553d4d32e3c4dea2c608607ca015b230a535b Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 30 Nov 2022 15:06:04 +0100 Subject: [PATCH] Implement `db2::Database::get_user_metrics_id` --- crates/collab/src/db2.rs | 19 ++++++++ crates/collab/src/db2/tests.rs | 80 +++++++++++++++++----------------- 2 files changed, 59 insertions(+), 40 deletions(-) diff --git a/crates/collab/src/db2.rs b/crates/collab/src/db2.rs index e2a03931d81d9a62e84db2bc581d16eea2abb08f..5c5157d2aa7f9e8b5ca9239159b5ad9bb115a5fa 100644 --- a/crates/collab/src/db2.rs +++ b/crates/collab/src/db2.rs @@ -178,6 +178,25 @@ impl Database { .await } + pub async fn get_user_metrics_id(&self, id: UserId) -> Result { + #[derive(Copy, Clone, Debug, EnumIter, DeriveColumn)] + enum QueryAs { + MetricsId, + } + + self.transact(|tx| async move { + let metrics_id: Uuid = user::Entity::find_by_id(id) + .select_only() + .column(user::Column::MetricsId) + .into_values::<_, QueryAs>() + .one(&tx) + .await? + .ok_or_else(|| anyhow!("could not find user"))?; + Ok(metrics_id.to_string()) + }) + .await + } + pub async fn share_project( &self, room_id: RoomId, diff --git a/crates/collab/src/db2/tests.rs b/crates/collab/src/db2/tests.rs index e26ffee7a8830cd4743b2bcccd1aa0a59bdf2b30..c66e2fa4061d2f402861ef58c138da2d1f5fbf51 100644 --- a/crates/collab/src/db2/tests.rs +++ b/crates/collab/src/db2/tests.rs @@ -361,46 +361,46 @@ test_both_dbs!( // ); // }); -// test_both_dbs!(test_metrics_id_postgres, test_metrics_id_sqlite, db, { -// let NewUserResult { -// user_id: user1, -// metrics_id: metrics_id1, -// .. -// } = db -// .create_user( -// "person1@example.com", -// false, -// NewUserParams { -// github_login: "person1".into(), -// github_user_id: 101, -// invite_count: 5, -// }, -// ) -// .await -// .unwrap(); -// let NewUserResult { -// user_id: user2, -// metrics_id: metrics_id2, -// .. -// } = db -// .create_user( -// "person2@example.com", -// false, -// NewUserParams { -// github_login: "person2".into(), -// github_user_id: 102, -// invite_count: 5, -// }, -// ) -// .await -// .unwrap(); - -// assert_eq!(db.get_user_metrics_id(user1).await.unwrap(), metrics_id1); -// assert_eq!(db.get_user_metrics_id(user2).await.unwrap(), metrics_id2); -// assert_eq!(metrics_id1.len(), 36); -// assert_eq!(metrics_id2.len(), 36); -// assert_ne!(metrics_id1, metrics_id2); -// }); +test_both_dbs!(test_metrics_id_postgres, test_metrics_id_sqlite, db, { + let NewUserResult { + user_id: user1, + metrics_id: metrics_id1, + .. + } = db + .create_user( + "person1@example.com", + false, + NewUserParams { + github_login: "person1".into(), + github_user_id: 101, + invite_count: 5, + }, + ) + .await + .unwrap(); + let NewUserResult { + user_id: user2, + metrics_id: metrics_id2, + .. + } = db + .create_user( + "person2@example.com", + false, + NewUserParams { + github_login: "person2".into(), + github_user_id: 102, + invite_count: 5, + }, + ) + .await + .unwrap(); + + assert_eq!(db.get_user_metrics_id(user1).await.unwrap(), metrics_id1); + assert_eq!(db.get_user_metrics_id(user2).await.unwrap(), metrics_id2); + assert_eq!(metrics_id1.len(), 36); + assert_eq!(metrics_id2.len(), 36); + assert_ne!(metrics_id1, metrics_id2); +}); // #[test] // fn test_fuzzy_like_string() {