File size: 1,186 Bytes
d7a7993 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
"""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"
|