from typing import Optional from beanie import Document from .constants import UserAccountProperty from app.authentication.backend.models.permission.constants import ( AdministrativeRole, Capability, ) from datetime import datetime from infra.models.constants import UserRegion from .constants import AuthType class UserAccountDoc(Document): profile_id: Optional[str] account_id: Optional[str] service_plan_id: Optional[str] properties: UserAccountProperty capabilities: Capability user_role: int = AdministrativeRole.NONE preferred_region: UserRegion = UserRegion.ZH_CN class Settings: name = "user_account" class UserPasswordDoc(Document): user_id: str password: str class Settings: name = "user_password" class UserEmailDoc(Document): user_id: str email: str class Settings: name = "user_email" class UserMobileDoc(Document): user_id: str mobile: str class Settings: name = "user_mobile" class AuthCodeDoc(Document): auth_code: str method: str method_type: AuthType expiry: datetime class Settings: name = "user_auth_code"