diff --git a/crates/collab/src/api.rs b/crates/collab/src/api.rs index 98c6ca6c849c0982b8286e6db0fe33a9848d18eb..9da5ed228c956a54691be6fbc4ad49b79f666a59 100644 --- a/crates/collab/src/api.rs +++ b/crates/collab/src/api.rs @@ -97,7 +97,8 @@ async fn create_user( #[derive(Deserialize)] struct UpdateUserParams { - admin: bool, + admin: Option, + invite_count: Option, } async fn update_user( @@ -105,9 +106,16 @@ async fn update_user( Json(params): Json, Extension(app): Extension>, ) -> Result<()> { - app.db - .set_user_is_admin(UserId(user_id), params.admin) - .await?; + if let Some(admin) = params.admin { + app.db.set_user_is_admin(UserId(user_id), admin).await?; + } + + if let Some(invite_count) = params.invite_count { + app.db + .set_invite_count(UserId(user_id), invite_count) + .await?; + } + Ok(()) } diff --git a/crates/collab/src/db.rs b/crates/collab/src/db.rs index c326a520610c4c9d862f150e983ee6b854e5b81e..e905feb76acbc8ea6a18c0a77ecd22cc85a65191 100644 --- a/crates/collab/src/db.rs +++ b/crates/collab/src/db.rs @@ -796,11 +796,13 @@ macro_rules! id_type { } id_type!(UserId); -#[derive(Clone, Debug, FromRow, Serialize, PartialEq)] +#[derive(Clone, Debug, Default, FromRow, Serialize, PartialEq)] pub struct User { pub id: UserId, pub github_login: String, pub admin: bool, + pub invite_code: Option, + pub invite_count: i32, } id_type!(OrgId); @@ -912,21 +914,25 @@ pub mod tests { id: user, github_login: "user".to_string(), admin: false, + ..Default::default() }, User { id: friend1, github_login: "friend-1".to_string(), admin: false, + ..Default::default() }, User { id: friend2, github_login: "friend-2".to_string(), admin: false, + ..Default::default() }, User { id: friend3, github_login: "friend-3".to_string(), admin: false, + ..Default::default() } ] ); @@ -1547,6 +1553,8 @@ pub mod tests { id: user_id, github_login: github_login.to_string(), admin, + invite_code: None, + invite_count: 0, }, ); Ok(user_id)