| """User Profile models.""" | |
| from datetime import datetime | |
| from pydantic import BaseModel, Field | |
| class ProfileBase(BaseModel): | |
| """Base profile fields.""" | |
| full_name: str = Field(default="", description="User's full name") | |
| phone: str | None = Field(None, description="Phone number") | |
| locale: str = Field(default="vi_VN", description="Locale setting") | |
| avatar_url: str | None = Field(None, description="Avatar URL") | |
| class ProfileCreate(ProfileBase): | |
| """Create profile request (usually auto-created on signup).""" | |
| pass | |
| class ProfileUpdate(BaseModel): | |
| """Update profile request - all fields optional.""" | |
| full_name: str | None = None | |
| phone: str | None = None | |
| locale: str | None = None | |
| avatar_url: str | None = None | |
| class Profile(ProfileBase): | |
| """Full profile response.""" | |
| id: str = Field(..., description="User ID (UUID)") | |
| role: str = Field(default="tourist", description="User role: tourist, driver, admin") | |
| created_at: datetime | |
| updated_at: datetime | |
| class Config: | |
| from_attributes = True | |
| class ProfileResponse(BaseModel): | |
| """API response wrapper.""" | |
| profile: Profile | |
| message: str = "Success" | |