
    4je                     z    d Z ddlmZ ddlmZ ddlmZmZmZmZ  G d de      Z	 G d de      Z
 G d	 d
e      Zy)uY  
使用者相關的 API schema。

Schema vs Model 的差別:
  - Model(app/models/user.py)是「資料庫長相」,有 password_hash 等敏感欄位
  - Schema(本檔)是「對外 API 長相」,絕對不會把 password_hash 吐出去

對外回應一律用 UserPublic(沒有密碼雜湊),
讓敏感資料無法因為粗心而洩漏到前端。
    )datetime)UUID)	BaseModel
ConfigDictEmailStrFieldc                   t    e Zd ZU dZ edd      Zeed<    edddd	      Ze	ed
<    edddd	      Z
e	ed<   y)UserRegisterRequestu)   POST /api/auth/register 的請求 body。.u   登入用 email,全域唯一)descriptionemail      u   至少 8 字元)
min_length
max_lengthr   password   d   u   顯示名稱display_nameN)__name__
__module____qualname____doc__r   r   r   __annotations__r   strr        4/volume1/homes/robertsu/coba/app/app/schemas/user.pyr
   r
      sB    3C-KLE8L#!IZ[Hc[caC^\L#\r   r
   c                   \    e Zd ZU dZ eddd      Zedz  ed<    edd      Zedz  ed	<   y)
UserUpdateRequestua   PATCH /api/users/me 的請求 body。

    所有欄位都可選,只更新有傳的欄位。
    Nr   r   )defaultr   r   r   i  )r    r   
avatar_url)	r   r   r   r   r   r   r   r   r!   r   r   r   r   r      s5    
  %TaCPL#*P"4C@Jd
@r   r   c                   p    e Zd ZU dZ ed      Zeed<   eed<   eed<   edz  ed<   eed	<   e	ed
<   e
ed<   y)
UserPublicu~   API 回傳給前端的使用者資料。

    刻意不包含 password_hash,確保即使開發者粗心也不會洩漏。
    T)from_attributesidr   r   Nr!   role	is_active
created_at)r   r   r   r   r   model_configr   r   r   boolr   r   r   r   r#   r#   '   s?    
 d3LH Jd

IOr   r#   N)r   r   uuidr   pydanticr   r   r   r   r
   r   r#   r   r   r   <module>r-      s@   	   ; ;]) ]A	 A r   