Skip to content
Clone
f0a1552
24 lines 805 B Rust
use std::collections::HashMap;
use sea_orm::{ColumnTrait, ConnectionTrait, DbErr, EntityTrait, QueryFilter};
use uuid::Uuid;
use super::user_emails;
/// Maps each user id to its activated primary email (lower-cased form).
pub async fn primary_emails<C: ConnectionTrait>(
db: &C,
uids: &[Uuid],
) -> Result<HashMap<Uuid, String>, DbErr> {
if uids.is_empty() {
return Ok(HashMap::new());
}
let rows = user_emails::Entity::find()
.filter(user_emails::Column::UserId.is_in(uids.to_vec()))
.filter(user_emails::Column::IsPrimary.eq(true))
.filter(user_emails::Column::IsActivated.eq(true))
.filter(user_emails::Column::DeletedAt.is_null())
.all(db)
.await?;
Ok(rows.into_iter().map(|r| (r.user_id, r.lower_email)).collect())
}