@@ -97,7 +97,8 @@ async fn create_user(
#[derive(Deserialize)]
struct UpdateUserParams {
- admin: bool,
+ admin: Option<bool>,
+ invite_count: Option<u32>,
}
async fn update_user(
@@ -105,9 +106,16 @@ async fn update_user(
Json(params): Json<UpdateUserParams>,
Extension(app): Extension<Arc<AppState>>,
) -> 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(())
}
@@ -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<String>,
+ 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)