a
    Ui                     @   s   d dl m Z  d dlmZ d dlmZ d dlmZ d dlmZm	Z	 G dd de
eZG dd	 d	e	d
dZG dd de	d
dZG dd de	d
dZG dd de	d
dZG dd de	d
dZG dd de	d
dZG dd de	d
dZdS )    )datetime)Enum)Optional)UniqueConstraint)FieldSQLModelc                   @   s   e Zd ZdZdZdZdS )
PollStatusdraftopenclosedN)__name__
__module____qualname__r	   r
   r    r   r   IC:\Users\jasmi\Projects\line-hihaho-voting\backend\app\models\entities.pyr   	   s   r   c                   @   s@   e Zd ZU eddZeed< dZeed< eej	dZ
eed< dS )	RoomTprimary_keyid namedefault_factory
created_atN)r   r   r   r   r   str__annotations__r   r   utcnowr   r   r   r   r   r      s   
r   T)tablec                   @   s   e Zd ZU eddZeed< edddZeed< eed< edd	Zeed
< ee	j
d	Ze	ed< dZee ed< dZeed< dZee ed< edd	Zeed< edd	Zeed< eejdZeed< dS )PollTr   r   room.idforeign_keyindexroom_idtitlez[]defaultoptions_jsonstatusNwinner_optionr   winner_sourcedeadline_at{}config_jsonruntime_jsonr   r   )r   r   r   r   r   r   r   r#   r'   r   r	   r(   r)   r   r*   r+   r   r-   r.   r   r   r   r   r   r   r      s   
r   c                   @   sx   e Zd ZU eddddfZedddZee e	d< ed	dd
Z
ee	d< eddZee	d< ee	d< eejdZee	d< dS )Votepoll_idvoter_idZuq_vote_poll_voterr   NTr&   r   r   zpoll.idr    )r"   choicer   r   )r   r   r   r   __table_args__r   r   r   intr   r0   r   r1   r   r   r   r   r   r   r   r/   #   s   
r/   c                   @   s   e Zd ZU edddZee ed< edddZe	ed< dZ
e	ed< dZe	ed	< dZe	ed
< edddZe	ed< edddZe	ed< edddZe	ed< dZe	ed< dZe	ed< eejdZeed< dS )LineEventRecordNTr3   r   )uniquer"   event_idr   
event_typeraw_previewraw_jsonr&   r"   r#   participant_idline_user_id_hashreply_statusreply_errorr   r   )r   r   r   r   r   r   r6   r   r9   r   r:   r;   r<   r#   r>   r?   r@   rA   r   r   r   r   r   r   r   r7   -   s   
r7   c                   @   s   e Zd ZU eddddfZeddZeed< eddd	Z	eed< ed
ddZ
eed< d
Zeed< d
Zeed< eejdZeed< eejdZeed< dS )Participantr#   r?   Zuq_participant_room_liner2   Tr   r   r   r    r   r=   sourcedisplay_namer   	joined_atlast_seen_atN)r   r   r   r   r5   r   r   r   r   r#   r?   rC   rD   r   r   rE   rF   r   r   r   r   rB   ;   s   
rB   c                   @   s   e Zd ZU eddZeed< edddZeed< edddZeed< ed	dd
Z	eed< d	Z
eed< eejdZeed< eejdZeed< eed< dS )AudienceSessionTr   
session_idparticipant.idr    r>   r   r#   r   r=   r?   rC   r   r   rF   
expires_atN)r   r   r   r   rH   r   r   r>   r#   r?   rC   r   r   r   rF   r   r   r   r   rG   G   s   
rG   c                   @   s   e Zd ZU eddZeed< edddZeed< edddZeed< ed	dd
Z	eed< d	Z
eed< ed	dd
Zeed< eddZeed< eejdZeed< eed< dZee ed< dZeed< dS )	JoinTokenTr   tokenrI   r    r>   r   r#   r   r=   r?   rC   r9   r,   r%   metadata_jsonr   r   rJ   Nlast_used_atr   	use_count)r   r   r   r   rL   r   r   r>   r#   r?   rC   r9   rM   r   r   r   rN   r   rO   r6   r   r   r   r   rK   R   s   
rK   N)r   enumr   typingr   
sqlalchemyr   sqlmodelr   r   r   r   r   r   r/   r7   rB   rG   rK   r   r   r   r   <module>   s   
