
    zi                     |    d Z ddlmZ ddlmZmZ ddlmZmZmZm	Z	 ddl
mZmZ ddlmZ ddlmZ  G d d	ee      Zy
)u  
LINE 綁定碼資料表(階段 6b)。

用途:讓 Cooper 網頁版的 user 跟 LINE 上的 line_user_id 綁定起來。

流程:
  1. user 在網頁版按「產生 LINE 綁定碼」 → 後端 INSERT 一筆 LineBindingCode (6 位數,TTL 10 分鐘)
  2. user 在 LINE 對 Cooper 說「綁定 482593」
  3. line_bridge 攔到關鍵字,redeem 這個 code:
     - 把 LINE shadow user 的 line_user_id 搬到網頁 user
     - shadow user 軟刪
     - 此 code 標記 used_at,失效

設計:
  - code 全表唯一(避免兩個人同時拿到一樣的數字),unique index
  - used_at IS NULL 才有效,避免重放
  - expires_at 過期 → redeem 拒絕
    )datetime)UUIDuuid4)DateTime
ForeignKeyStringUuid)Mappedmapped_column)Base)TimestampMixinc                   :   e Zd ZU dZdZ e ed      de      Ze	e
   ed<    e ed      ddd	      Ze	e   ed
<    e ed       edd      dd      Ze	e
   ed<    e ed      d      Ze	e   ed<    e ed      d      Ze	edz     ed<   defdZy)LineBindingCodeu+   LINE ↔ Cooper 帳號綁定一次性碼。line_binding_codesT)as_uuid)primary_keydefaultid   F)uniquenullableindexcodezusers.idCASCADE)ondelete)r   r   user_id)timezone)r   
expires_atNused_atreturnc                 V    d| j                    d| j                   d| j                   dS )Nz<LineBindingCode z user=z used=>)r   r   r   )selfs    ;/volume1/homes/robertsu/coba/app/app/models/line_binding.py__repr__zLineBindingCode.__repr__:   s*    "499+VDLL>~UVWW    )__name__
__module____qualname____doc____tablename__r   r	   r   r   r
   r   __annotations__r   r   strr   r   r   r   r   r   r%    r&   r$   r   r      s    5(M$T$%7TSXYBtY &fQiuTXYD&+Y *T:	2	GVD\  $1$$Jx  
 (5$(GVHtO$ 
X# Xr&   r   N)r*   r   uuidr   r   
sqlalchemyr   r   r   r	   sqlalchemy.ormr
   r   app.databaser   app.models.userr   r   r.   r&   r$   <module>r4      s1   &   9 9 0  *XdN Xr&   