use axum::extract::Extension;
use uuid::Uuid;
use crate::auth::types::AuthClaims;
pub type OptionalAuthClaims = Option<Extension<AuthClaims>>;
pub fn extract_user_id_from_claims(claims: &OptionalAuthClaims) -> Option<Uuid> {
claims
.as_ref()
.and_then(|Extension(claims)| claims.sub.as_ref())
.and_then(|sub| Uuid::parse_str(sub).ok())
}
pub fn extract_user_id_with_fallback(claims: &OptionalAuthClaims) -> Uuid {
extract_user_id_from_claims(claims).unwrap_or_else(|| {
Uuid::parse_str("00000000-0000-0000-0000-000000000001").expect("hardcoded UUID is valid")
})
}
pub fn extract_username_from_claims(claims: &OptionalAuthClaims) -> Option<String> {
claims.as_ref().and_then(|Extension(claims)| claims.username.clone())
}