dialtone_sqlx 0.1.0

Dialtone SQLx Back-End
Documentation
use crate::db::user_principal::check_name_available::check_user_name_available;
use dialtone_common::ap::pun::create_preferred_user_name;
use dialtone_common::ap::ActorType;
use dialtone_common::utils::make_acct::make_acct;
use sqlx::PgPool;

pub async fn check_user_name_availability(
    pool: &PgPool,
    user_name: &str,
    host_name: &str,
) -> anyhow::Result<bool> {
    let user_name = user_name.to_lowercase();
    let person_pun = create_preferred_user_name(&user_name, &ActorType::Person);
    let group_pun = create_preferred_user_name(&user_name, &ActorType::Group);
    let service_pun = create_preferred_user_name(&user_name, &ActorType::Service);
    let actor_ids = &[
        person_pun.as_str(),
        group_pun.as_str(),
        service_pun.as_str(),
    ];
    let acct_name = make_acct(&user_name, host_name);
    let action = check_user_name_available(pool, &acct_name, actor_ids).await?;
    Ok(action)
}