from pydantic import BaseModel, Field, EmailStr, root_validator from typing import Optional # Validate dau vao email class UserEmailRequest(BaseModel): email: EmailStr = Field(..., description="Email address") provider: Optional[str] = Field(None, description="Email service provider") is_primary: Optional[bool] = Field(None, description= "is primary email ") @root_validator(pre=True) def auto_detect_provider(cls, values): email = values.get("email") provider = values.get("provider") if not provider and email: domain_part = email.split('@')[-1] values["provider"] = domain_part.split('.')[0] return values class UserEmailUpdateRequest(BaseModel): email: Optional[EmailStr] = Field(None, description="Email address") provider: Optional[str] = Field(None, description="Email service provider") is_primary: Optional[bool] = Field(None, description= "is primary email ") @root_validator(pre=True) def auto_detect_provider(cls, values): email = values.get("email") provider = values.get("provider") if not provider and email: domain_part = email.split('@')[-1] values["provider"] = domain_part.split('.')[0] return values