
    i                        d Z ddlmZ ddlmZ ddlmZ ddlmZmZm	Z	 ed   Z
ed   Z G d d	e      Z G d
 de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zy)u*   
頻道 / 訊息 API schema(階段 3a)。
    )datetime)Literal)UUID)	BaseModel
ConfigDictField)publicprivatedirectcoba_dm)textimagefileaudiostickersystemcoba_actionc                   ~    e Zd ZU  eddd      Zeed<    edd      Zeed	<    ed
d      Zed
z  ed<   dZ	e
ed<   y
)ChannelCreateRequest.   d   
min_length
max_lengthnameu   💬
   defaultr   iconN  descriptionr	   channel_type)__name__
__module____qualname__r   r   str__annotations__r   r!   r"   ChannelType     7/volume1/homes/robertsu/coba/app/app/schemas/channel.pyr   r      sE    caC8D#8f4D#4#DSAKtA (L+(r*   r   c                   |    e Zd ZU  eddd      Zedz  ed<    edd      Zedz  ed<    edd	      Zedz  ed
<   y)ChannelUpdateRequestNr   r   )r   r   r   r   r   r   r   r    r!   )	r#   r$   r%   r   r   r&   r'   r   r!   r)   r*   r+   r-   r-      sC    TaCHD#*HTb9D#*9#DSAKtAr*   r-   c                   v    e Zd ZU  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
<   e
ed<   y)ChannelPublicTfrom_attributesidr   r   Nr!   r"   
is_default
sort_order
created_at)r#   r$   r%   r   model_configr   r'   r&   boolintr   r)   r*   r+   r/   r/       s<    d3LH
I
ItOr*   r/   c                   L    e Zd ZU dZ ed      Zeed<   eed<   dZ	edz  ed<   y)	_UserMiniuR   訊息附帶的發送者簡略資料。庫柏訊息會是 None(由前端判斷)。Tr0   r2   display_nameN
avatar_url)
r#   r$   r%   __doc__r   r6   r   r'   r&   r<   r)   r*   r+   r:   r:   0   s(    \d3LH!Jd
!r*   r:   c                   6    e Zd ZU dZeed<   eed<   ee   ed<   y)_ReactionGroupu(   同一個 emoji 的所有反應彙整。emojicountuser_idsN)	r#   r$   r%   r=   r&   r'   r8   listr   r)   r*   r+   r?   r?   :   s    2JJ4jr*   r?   c                   P    e Zd ZU  eddd      Zeed<   dZeed<   dZ	e
dz  ed	<   y)
MessageCreateRequest.r   '  r   contentr   message_typeNreply_to_id)r#   r$   r%   r   rG   r&   r'   rH   MessageTyperI   r   r)   r*   r+   rE   rE   B   s-    u=GS= &L+&#K#r*   rE   c                   2    e Zd ZU dZ eddd      Zeed<   y)MessageUpdateRequestu"   編輯訊息(只能改 content)。.r   rF   r   rG   N)r#   r$   r%   r=   r   rG   r&   r'   r)   r*   r+   rL   rL   H   s    ,u=GS=r*   rL   c                       e Zd ZU  ed      Zeed<   eed<   edz  ed<   eed<   eed<   edz  ed	<   e	ed
<   e	ed<   e
ed<   e
ed<   g Zee   ed<   g Zee   ed<   g Zee   ed<   y)MessagePublicTr0   r2   
channel_idNuserrG   rH   rI   	is_pinned	is_editedr5   
updated_at	reactionsread_bytags)r#   r$   r%   r   r6   r   r'   r:   r&   r7   r   rT   rC   r?   rU   rV   r)   r*   r+   rN   rN   N   sx    d3LH
d
LOO&(ItN#(!GT)_!D$s)r*   rN   c                   .    e Zd ZU  eddd      Zeed<   y)ReactionRequest.r      r   r@   N)r#   r$   r%   r   r@   r&   r'   r)   r*   r+   rX   rX   e   s    sqR8E38r*   rX   N)r=   r   typingr   uuidr   pydanticr   r   r   r(   rJ   r   r-   r/   r:   r?   rE   rL   rN   rX   r)   r*   r+   <module>r]      s       1 1 >?Z[)9 )B9 B
I 
 "	 "Y $9 $>9 >I .9i 9r*   