
    i                         % S SK Jr  S SKJrJr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KJr  \" \R"                  SS	9r\\S
'   \
" \\SS9rS\S\S\SS4S jrSS jrSS jrSS jrS\\S4   4S jrg)    )AsyncGenerator)deletetextupdate)AsyncEnginecreate_async_engine)sessionmaker)SQLModel)AsyncSession)settingsF)echoengine)class_expire_on_commit
table_namecolumn_name
column_sqlreturnNc                    #    U R                  SU S35      I S h  vN nUR                  5        Vs1 sH  n[        US   5      iM     nnX&;   a  g U R                  SU SU 35      I S h  vN   g  NUs  snf  N7f)NzPRAGMA table_info('z')   zALTER TABLE z ADD COLUMN )exec_driver_sqlfetchallstr)connr   r   r   rowsrowexisting_columnss          <C:\Users\jasmi\Projects\line-hihaho-voting\backend\app\db.py_add_column_if_missingr      s~     %%(;J<r&JKKD/3}}?CF?&


j\j\R
SSS	 L? Ts,   A:A1A:A3	"A:+A8,A:3A:c                   #    [        [        R                  5      R                  S5      (       d  g [	        U SSS5      I S h  vN   [	        U SSS5      I S h  vN   [	        U SSS5      I S h  vN   [	        U S	S
S5      I S h  vN   [	        U S	SS5      I S h  vN   [	        U S	SS5      I S h  vN   [	        U S	SS5      I S h  vN   [	        U S	SS5      I S h  vN   [	        U S	SS5      I S h  vN   U R                  [        S5      5      I S h  vN   U R                  [        S5      5      I S h  vN   U R                  [        S5      5      I S h  vN   g  GN GN	 N N N N N N N} N] N= N7f)Nsqlitepollwinner_sourcezwinner_source TEXT DEFAULT ''config_jsonzconfig_json TEXT DEFAULT '{}'runtime_jsonzruntime_json TEXT DEFAULT '{}'lineeventrecordraw_jsonzraw_json TEXT DEFAULT ''room_idzroom_id TEXT DEFAULT ''participant_idzparticipant_id TEXT DEFAULT ''line_user_id_hashz!line_user_id_hash TEXT DEFAULT ''reply_statuszreply_status TEXT DEFAULT ''reply_errorzreply_error TEXT DEFAULT ''zRCREATE INDEX IF NOT EXISTS ix_lineeventrecord_room_id ON lineeventrecord (room_id)z`CREATE INDEX IF NOT EXISTS ix_lineeventrecord_participant_id ON lineeventrecord (participant_id)zfCREATE INDEX IF NOT EXISTS ix_lineeventrecord_line_user_id_hash ON lineeventrecord (line_user_id_hash))r   r   database_url
startswithr   executer   )r   s    r   _run_sqlite_migrationsr0      s~    x$$%00::
 v@_
```
 v}>]
^^^
 v~?_
```
 '8*F`
aaa
 '8)E^
___
 '8:JLl
mmm
 !46Y   !'8.Jh
iii
 '8-If
ggg
,,tpq
rrr
,,op   ,,5	
   a^`a_m jgrs   A E8EE8E!E8.E$/E8E&E8E(E80E*1E8E,E8E.E82E03!E8E2!E86E47!E8E6E8!E8$E8&E8(E8*E8,E8.E80E82E84E86E8c                  >  #    SSK Jn   [        R                  5        IS h  vN nUR	                  [
        R                  R                  5      I S h  vN   [        U5      I S h  vN   S S S 5      IS h  vN   g  NY N* N N! , IS h  vN  (       d  f       g = f7f)Nr   )entities)	
app.modelsr2   r   beginrun_syncr
   metadata
create_allr0   )r2   r   s     r   init_dbr8   9   s[     #||~~mmH--88999$T*** ~~9* ~~~sh   BA;B-BA=B%A?&B*B5B6B=B?BBB	B
BBc                    #    SSK Jn JnJnJnJnJnJn  [        5        IS h  vN nUR                  [        U 5      5      I S h  vN   UR                  [        U5      5      I S h  vN   UR                  [        U5      5      I S h  vN   UR                  [        U5      5      I S h  vN   UR                  [        U5      5      I S h  vN   UR                  [        U5      R                  UR                  S SS SS95      I S h  vN   UR                  5       I S h  vN   S S S 5      IS h  vN   g  GN N N N N Nu N: N$ N! , IS h  vN  (       d  f       g = f7f)Nr   )AudienceSession	JoinTokenLineEventRecordParticipantPoll
PollStatusVote z{})statuswinner_optionr#   deadline_atr%   )app.models.entitiesr:   r;   r<   r=   r>   r?   r@   async_session_factoryexecr   r   valuesdraftcommit)r:   r;   r<   r=   r>   r?   r@   sessions           r   reset_runtime_staterL   A   s    ttt$&&'ll6/2333ll6),---ll6$<(((ll6/2333ll6+.///ll4L!''"  !   
 	
 	
 nn '&&3-(3/	
 	 '&&&s   !E%D8E%ED;!E'D=(!E	D?
!E+E,!EE<E
EE"E#E'E%2E	3E%;E=E?EEEEE	E%E"EE"E%c                    #    [        5        IS h  vN n U 7v   S S S 5      IS h  vN   g  N N! , IS h  vN  (       d  f       g = f7f)N)rF   )rK   s    r   get_sessionrN   V   s)     $&&' '&&&&&s9   A
,A
0A
.A
A
A9AA
)r   N)collections.abcr   
sqlalchemyr   r   r   sqlalchemy.ext.asyncior   r   sqlalchemy.ormr	   sqlmodelr
   sqlmodel.ext.asyncio.sessionr   
app.configr   r-   r   __annotations__rF   r   r   r0   r8   rL   rN        r   <module>rY      s    * + + C '  5 )	 
 %
 T3 TS TVY T^b T4+*>,*<= rX   