
    Pi                        S SK r S SKrS SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJrJr  S SKJr  S S	KJr  S S
KJr  \" S/S9rS\S\4S jr\R5                  S5      S\4S j5       r\R5                  S5      S\4S j5       rg)    N)	APIRouterStreamingResponse)desc)select)async_session_factory)Poll
PollStatus)poll_out)participants)votingstream)tagsroom_idreturnc           
        #    [        5        IS h  vN nUR                  [        [        5      R	                  [        R
                  U :H  5      R                  [        [        R                  5      5      5      I S h  vN n[        UR                  5       5      nU Vs/ sH  n[        U5      PM     nn[        S U 5       S 5      =(       d-    [        S U 5       S 5      =(       d    [        S U 5       S 5      n[        R                  " X5      I S h  vN n[        R                  " X5      I S h  vN nU(       d  U U UUS.S US S S.sS S S 5      IS h  vN   $ [         R"                  " XR$                  5      I S h  vN n	[         R&                  " U5      n
U
 H  nU	R)                  US5        M     [         R*                  " X5      u  p[         R,                  " U5      nU U UUS.[        U5      UU	[/        U	R1                  5       5      UUS.UR3                  S5      S.sS S S 5      IS h  vN   $  GN% GNs  snf  GN, GN N N N! , IS h  vN  (       d  f       g = f7f)	Nc              3   b   #    U H&  oR                   [        R                  :X  d  M"  Uv   M(     g 7fN)statusr
   open.0ps     HC:\Users\jasmi\Projects\line-hihaho-voting\backend\app\routers\stream.py	<genexpr>&build_room_snapshot.<locals>.<genexpr>   s     ATXX%@!!T    /	/c              3   b   #    U H&  oR                   [        R                  :X  d  M"  Uv   M(     g 7fr   )r   r
   closedr   s     r   r   r      s!     F1J4E4E(EQQr   c              3   b   #    U H&  oR                   [        R                  :X  d  M"  Uv   M(     g 7fr   )r   r
   draftr   s     r   r   r      s!     E1J4D4D(DQQr   )idparticipant_countactive_session_count)r   roompollpollsstats
controllerr   )countstotalleadertiecontroller_command)r   execr   r	   wherer   order_byr   
created_atlistallr   nextparticipants_svccount_room_active_participantscount_room_sessions
voting_svccompute_tallyr"   parse_options
setdefaultpick_winnerparse_poll_runtimesumvaluesget)r   sessionresultrowsr   	all_pollstargetr#   r$   tallyoptsor,   r-   runtimes                  r   build_room_snapshotrK      s    $&&'||4Lt||w67@@dooAVW
 
 FJJL!*./$QXa[$	/ATA4H MFFMMEEtL 	
 #3"Q"QRY"cc%5%I%I'%[["!):,@
 "" '&&4 !..w		BB''/AQ"  ,,U9//7%6(<
 V$U\\^, 	 "++&:;
A '&&
 0 d[ '4 C5 '&&&s   I'H6I'A(I=H9>!IH<3A"III3I4II'II'#I I	B#I$I'0I1I'9I<III'	II'I$II$ I'z/stream/room/{room_id}c                 6   ^ #    U 4S jn[        U" 5       SS9$ 7f)Nc                    >#     [        T5      I S h  vN n S[        R                  " U [        S9 S37v   [        R
                  " S5      I S h  vN   MS   ND N7f)Nzdata: )defaultz

   )rK   jsondumpsstrasynciosleep)snapr   s    r   	event_genstream_room.<locals>.event_genI   sN     ,W55D4::dC89>>--""" 5"s!   AA=AAAAztext/event-stream)
media_typer   )r   rV   s   ` r   stream_roomrY   F   s     # Y[5HIIs   z/rooms/{room_id}/snapshotc                 4   #    [        U 5      I S h  vN $  N7fr   )rK   )r   s    r   get_room_snapshotr[   R   s     $W----s   )rS   rP   fastapir   fastapi.responsesr   
sqlalchemyr   sqlmodelr   app.dbr   app.models.entitiesr	   r
   app.routers.pollsr   app.servicesr   r6   r   r9   routerrR   dictrK   rA   rY   r[        r   <module>rh      s       /   ( 0 & 9 -	
	#1
s 1
t 1
h $%Js J &J '(.S . ).rg   