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"