Implement db2::Database::get_user_metrics_id

This commit is contained in:
Antonio Scandurra 2022-11-30 15:06:04 +01:00
parent 2e24d128db
commit 04d553d4d3
2 changed files with 58 additions and 39 deletions

View file

@ -178,6 +178,25 @@ impl Database {
.await
}
pub async fn get_user_metrics_id(&self, id: UserId) -> Result<String> {
#[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,

View file

@ -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();
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);
// });
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() {