use std::sync::Arc;
use uuid::Uuid;
use crate::callback::AuthCallback;
use crate::errors::AppError;
use crate::repositories::OrgRole;
use crate::services::EmailService;
use crate::AppState;
pub struct OrgAssignment {
pub org_id: Uuid,
pub role: OrgRole,
}
pub async fn resolve_org_assignment<C: AuthCallback, E: EmailService>(
state: &Arc<AppState<C, E>>,
) -> Result<OrgAssignment, AppError> {
let setting = state
.system_settings_repo
.get_by_key("default_org_id")
.await?
.ok_or_else(|| {
AppError::Internal(anyhow::anyhow!(
"default_org_id not configured — run setup first"
))
})?;
let org_id: Uuid = setting
.value
.parse()
.map_err(|_| AppError::Internal(anyhow::anyhow!("Invalid default_org_id setting")))?;
Ok(OrgAssignment {
org_id,
role: OrgRole::Member,
})
}