from datetime import datetime from typing import Optional from pydantic import BaseModel, Field class UserPreferences(BaseModel): """User preferences model.""" notifications: bool = True darkMode: bool = True theme: str = "dark" class User(BaseModel): """MongoDB User model.""" id: Optional[str] = Field(default=None, alias="_id") name: str email: str image: Optional[str] = None password_hash: str preferences: UserPreferences = Field(default_factory=UserPreferences) created_at: datetime = Field(default_factory=datetime.utcnow) updated_at: datetime = Field(default_factory=datetime.utcnow) class Config: populate_by_name = True