dialtone_sqlx 0.1.0

Dialtone SQLx Back-End
Documentation
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(())),
    }
}