o
    ¹iâ
  ã                   @   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 d dlmZ d dlmZ e 	d¡d	d
„ ƒZ
e 	d¡dd„ ƒZe 	d¡dd„ ƒZdd„ Ze 	d¡dd„ ƒZdS )é   )Úcreate_engine)Úexc)Ú	create_db)Údrop_db)Úlog)Úrun_reap_dbs)Úupdate_db_optsÚmssqlc                 C   s   d|d< d S )NFÚlegacy_schema_aliasing© )Údb_urlÚdb_optsr   r   ú^/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/sqlalchemy/dialects/mssql/provision.pyÚ_mssql_update_db_opts
   s   r   c                 C   s‚   |  ¡ jdd/}| d| ¡ | d| ¡ | d| ¡ | d| ¡ | d¡ | d¡ W d   ƒ d S 1 s:w   Y  d S )	NÚ
AUTOCOMMIT©Úisolation_levelzcreate database %sz1ALTER DATABASE %s SET ALLOW_SNAPSHOT_ISOLATION ONz0ALTER DATABASE %s SET READ_COMMITTED_SNAPSHOT ONzuse %szcreate schema test_schemazcreate schema test_schema_2)ÚconnectÚexecution_optionsÚexecute©ÚcfgÚengÚidentÚconnr   r   r   Ú_mssql_create_db   s   ÿÿ
"ör   c                 C   s@   |  ¡ jdd}t||ƒ W d   ƒ d S 1 sw   Y  d S )Nr   r   )r   r   Ú_mssql_drop_ignorer   r   r   r   Ú_mssql_drop_db   s   "ÿr   c              
   C   sV   z|   d| ¡ t d|¡ W dS  tjy* } zt d|¡ W Y d }~dS d }~ww )Nzdrop database %szReaped db: %sTzcouldn't drop db: %sF)r   r   Úinfor   ÚDatabaseErrorÚwarning)r   r   Úerrr   r   r   r   $   s   	€þr   c                 C   sÒ   t  d| ¡ t| ƒ}| ¡ jddM}t  dd |¡¡ | d¡}dd„ |D ƒ}tƒ }|D ]}||v r8| |¡ q-d	 }}	t	|d
ƒD ]\}	}
t
||
ƒrO|d
7 }qBt  d||	¡ W d   ƒ d S 1 sbw   Y  d S )Nzdb reaper connecting to %rr   r   zidentifiers in file: %sz, z›select d.name from sys.databases as d where name like 'TEST_%' and not exists (select session_id from sys.dm_exec_sessions where database_id=d.database_id)c                 S   s   h | ]\}|  ¡ ’qS r   )Úlower)Ú.0Údbnamer   r   r   Ú	<setcomp>D   s    z"_reap_mssql_dbs.<locals>.<setcomp>é    é   z-Dropped %d out of %d stale databases detected)r   r   r   r   r   Újoinr   ÚsetÚaddÚ	enumerater   )ÚurlÚidentsr   r   Úto_reapÚ	all_namesÚto_dropÚnameÚdroppedÚtotalr$   r   r   r   Ú_reap_mssql_dbs6   s,   ÿ
€
€ÿ"ìr4   N)Ú r   r   Útesting.provisionr   r   r   r   r   Úfor_dbr   r   r   r   r4   r   r   r   r   Ú<module>   s     


