use crate::db::user_principal::UserPrincipalStatusType;
use dialtone_common::rest::users::web_user::UserStatus;
use sqlx::{Executor, Postgres};
pub async fn change_user_status(
exec: impl Executor<'_, Database = Postgres>,
acct: &str,
status: &UserStatus,
) -> Result<Option<()>, sqlx::Error> {
let user_status = UserPrincipalStatusType::from(status);
let result = sqlx::query(
r#"
update user_principal
set status = $1
where acct = $2
returning acct
"#,
)
.bind(user_status)
.bind(&acct)
.fetch_optional(exec)
.await?;
match result {
None => Ok(None),
Some(_) => Ok(Some(())),
}
}