diff --git a/crates/collab/src/db/queries/users.rs b/crates/collab/src/db/queries/users.rs index 89211130b88c69d4bf524bba25ae116790321d3e..79b5d227c0c6f69476e5968e080d268dd20e879a 100644 --- a/crates/collab/src/db/queries/users.rs +++ b/crates/collab/src/db/queries/users.rs @@ -66,40 +66,6 @@ impl Database { .await } - /// Returns all users flagged as staff. - pub async fn get_staff_users(&self) -> Result> { - self.transaction(|tx| async { - let tx = tx; - Ok(user::Entity::find() - .filter(user::Column::Admin.eq(true)) - .all(&*tx) - .await?) - }) - .await - } - - /// Returns a user by email address. There are no access checks here, so this should only be used internally. - pub async fn get_user_by_email(&self, email: &str) -> Result> { - self.transaction(|tx| async move { - Ok(user::Entity::find() - .filter(user::Column::EmailAddress.eq(email)) - .one(&*tx) - .await?) - }) - .await - } - - /// Returns a user by GitHub user ID. There are no access checks here, so this should only be used internally. - pub async fn get_user_by_github_user_id(&self, github_user_id: i32) -> Result> { - self.transaction(|tx| async move { - Ok(user::Entity::find() - .filter(user::Column::GithubUserId.eq(github_user_id)) - .one(&*tx) - .await?) - }) - .await - } - /// Returns a user by GitHub login. There are no access checks here, so this should only be used internally. pub async fn get_user_by_github_login(&self, github_login: &str) -> Result> { self.transaction(|tx| async move { @@ -270,39 +236,6 @@ impl Database { .await } - /// Sets "accepted_tos_at" on the user to the given timestamp. - pub async fn set_user_accepted_tos_at( - &self, - id: UserId, - accepted_tos_at: Option, - ) -> Result<()> { - self.transaction(|tx| async move { - user::Entity::update_many() - .filter(user::Column::Id.eq(id)) - .set(user::ActiveModel { - accepted_tos_at: ActiveValue::set(accepted_tos_at), - ..Default::default() - }) - .exec(&*tx) - .await?; - Ok(()) - }) - .await - } - - /// hard delete the user. - pub async fn destroy_user(&self, id: UserId) -> Result<()> { - self.transaction(|tx| async move { - access_token::Entity::delete_many() - .filter(access_token::Column::UserId.eq(id)) - .exec(&*tx) - .await?; - user::Entity::delete_by_id(id).exec(&*tx).await?; - Ok(()) - }) - .await - } - /// Find users where github_login ILIKE name_query. pub async fn fuzzy_search_users(&self, name_query: &str, limit: u32) -> Result> { self.transaction(|tx| async { @@ -341,14 +274,4 @@ impl Database { result.push('%'); result } - - pub async fn get_users_missing_github_user_created_at(&self) -> Result> { - self.transaction(|tx| async move { - Ok(user::Entity::find() - .filter(user::Column::GithubUserCreatedAt.is_null()) - .all(&*tx) - .await?) - }) - .await - } } diff --git a/crates/collab/src/db/tests.rs b/crates/collab/src/db/tests.rs index 318fbc4e76d907f4798c069400ba92574c06e789..67c36576aac0f938bbc040202d7fa83e35af2d3b 100644 --- a/crates/collab/src/db/tests.rs +++ b/crates/collab/src/db/tests.rs @@ -6,7 +6,6 @@ mod db_tests; #[cfg(target_os = "macos")] mod embedding_tests; mod extension_tests; -mod user_tests; use crate::migrations::run_database_migrations; diff --git a/crates/collab/src/db/tests/db_tests.rs b/crates/collab/src/db/tests/db_tests.rs index def0769c373605021653b07a97cbff2ec807d34d..2f0bda1cc6e5b69c115d217a46a4061c328a784f 100644 --- a/crates/collab/src/db/tests/db_tests.rs +++ b/crates/collab/src/db/tests/db_tests.rs @@ -1,7 +1,7 @@ use super::*; use crate::test_both_dbs; use chrono::Utc; -use pretty_assertions::{assert_eq, assert_ne}; +use pretty_assertions::assert_eq; use std::sync::Arc; test_both_dbs!( @@ -457,53 +457,6 @@ async fn test_add_contacts(db: &Arc) { ); } -test_both_dbs!( - test_metrics_id, - test_metrics_id_postgres, - test_metrics_id_sqlite -); - -async fn test_metrics_id(db: &Arc) { - let NewUserResult { - user_id: user1, - metrics_id: metrics_id1, - .. - } = db - .create_user( - "person1@example.com", - None, - false, - NewUserParams { - github_login: "person1".into(), - github_user_id: 101, - }, - ) - .await - .unwrap(); - let NewUserResult { - user_id: user2, - metrics_id: metrics_id2, - .. - } = db - .create_user( - "person2@example.com", - None, - false, - NewUserParams { - github_login: "person2".into(), - github_user_id: 102, - }, - ) - .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_project_count, test_project_count_postgres, diff --git a/crates/collab/src/db/tests/user_tests.rs b/crates/collab/src/db/tests/user_tests.rs deleted file mode 100644 index dd61da55ca001a0424aaeafb0411f8a7de343795..0000000000000000000000000000000000000000 --- a/crates/collab/src/db/tests/user_tests.rs +++ /dev/null @@ -1,96 +0,0 @@ -use chrono::Utc; - -use crate::{ - db::{Database, NewUserParams}, - test_both_dbs, -}; -use std::sync::Arc; - -test_both_dbs!( - test_accepted_tos, - test_accepted_tos_postgres, - test_accepted_tos_sqlite -); - -async fn test_accepted_tos(db: &Arc) { - let user_id = db - .create_user( - "user1@example.com", - None, - false, - NewUserParams { - github_login: "user1".to_string(), - github_user_id: 1, - }, - ) - .await - .unwrap() - .user_id; - - let user = db.get_user_by_id(user_id).await.unwrap().unwrap(); - assert!(user.accepted_tos_at.is_none()); - - let accepted_tos_at = Utc::now().naive_utc(); - db.set_user_accepted_tos_at(user_id, Some(accepted_tos_at)) - .await - .unwrap(); - - let user = db.get_user_by_id(user_id).await.unwrap().unwrap(); - assert!(user.accepted_tos_at.is_some()); - assert_eq!(user.accepted_tos_at, Some(accepted_tos_at)); - - db.set_user_accepted_tos_at(user_id, None).await.unwrap(); - - let user = db.get_user_by_id(user_id).await.unwrap().unwrap(); - assert!(user.accepted_tos_at.is_none()); -} - -test_both_dbs!( - test_destroy_user_cascade_deletes_access_tokens, - test_destroy_user_cascade_deletes_access_tokens_postgres, - test_destroy_user_cascade_deletes_access_tokens_sqlite -); - -async fn test_destroy_user_cascade_deletes_access_tokens(db: &Arc) { - let user_id = db - .create_user( - "user1@example.com", - Some("user1"), - false, - NewUserParams { - github_login: "user1".to_string(), - github_user_id: 12345, - }, - ) - .await - .unwrap() - .user_id; - - let user = db.get_user_by_id(user_id).await.unwrap(); - assert!(user.is_some()); - - let token_1_id = db - .create_access_token(user_id, None, "token-1", 10) - .await - .unwrap(); - - let token_2_id = db - .create_access_token(user_id, None, "token-2", 10) - .await - .unwrap(); - - let token_1 = db.get_access_token(token_1_id).await; - let token_2 = db.get_access_token(token_2_id).await; - assert!(token_1.is_ok()); - assert!(token_2.is_ok()); - - db.destroy_user(user_id).await.unwrap(); - - let user = db.get_user_by_id(user_id).await.unwrap(); - assert!(user.is_none()); - - let token_1 = db.get_access_token(token_1_id).await; - let token_2 = db.get_access_token(token_2_id).await; - assert!(token_1.is_err()); - assert!(token_2.is_err()); -}