
    ,h                        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  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  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  SSKJr  \R.                  " S5      S 5       r\R.                  " S5      S 5       r\R.                  " S5      S 5       r\R.                  " S5      S 5       rS r\R.                  " S5      S 5       r\R.                  " S5      S 5       r\R.                  " S5      S 5       r\R.                  " S5      S 5       r\R.                  " S5      S 5       rg )!    )inspect)Integer   )create_engine)exc)Column)DropConstraint)ForeignKeyConstraint)MetaData)Table)	create_db)"drop_all_schema_objects_pre_tables)drop_db)generate_driver_url)get_temp_table_name)log)normalize_sequence)post_configure_engine)run_reap_dbs)temp_table_keyword_argsmssqlc                 \    UR                   S:X  a  SUR                  R                  l        g g )NpyodbcF)driverdialectdbapipooling)urlenginefollower_idents      [/var/www/auris/envauris/lib/python3.13/site-packages/sqlalchemy/dialects/mssql/provision.pyr   r      s%    }} ',$ !    c                 4   U R                  5       nU R                  U< SU< 3S9nUS;  a  UR                  SS9nUS:X  a  UR                  SS05      nU(       a  UR                  U5      n UR	                  5         U$ ! [
        R                   a     g f = f)	N+)
drivername)r   aioodbc )queryr&   MARS_ConnectionYes)get_backend_namesetupdate_query_dictupdate_query_stringget_dialectr   NoSuchModuleError)r   r   	query_strbackendnew_urls        r!   r   r   $   s    ""$GggGV!<g=G**++B+'++->,FG--i8     s   .B   BBc                 V   UR                  5       R                  SS9 nUR                  SU-  5        UR                  SU-  5        UR                  SU-  5        UR                  SU-  5        UR                  S5        UR                  S5        S S S 5        g ! , (       d  f       g = f)	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exec_driver_sqlcfgengidentconns       r!   _mssql_create_dbr@   ;   s    		(	(	(	F$1E9:?%G	
 	>F	
 	X-.89:; 
G	F	Fs   A3B
B(c                     UR                  5       R                  SS9 n[        X25        S S S 5        g ! , (       d  f       g = f)Nr5   r6   )r8   r9   _mssql_drop_ignorer;   s       r!   _mssql_drop_dbrC   J   s0    		(	(	(	F$4' 
G	F	Fs	   3
Ac                      U R                  SU-  5        [        R                  " SU5        g! [        R                   a!  n[        R
                  " SU5         S nAgS nAff = f)Nzdrop database %szReaped db: %sTzcouldn't drop db: %sF)r:   r   infor   DatabaseErrorwarning)r?   r>   errs      r!   rB   rB   P   sV     	/%78%( *C0s   +. A#AA#c                 R   [         R                  " SU 5        [        U 5      nUR                  5       R	                  SS9 n[         R                  " SSR                  U5      5        UR                  S5      nU Vs1 s H  u  oUR                  5       iM     nn[        5       nU H  nX;   d  M
  UR                  U5        M     S=p[        US5       H  u  p[        X55      (       d  M  U	S-  n	M     [         R                  " S	X5        S S S 5        g s  snf ! , (       d  f       g = f)
Nzdb reaper connecting to %rr5   r6   zidentifiers in file: %sz, zselect 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)r      z-Dropped %d out of %d stale databases detected)r   rE   r   r8   r9   joinr:   lowerr,   add	enumeraterB   )r   identsr=   r?   to_reapdbname	all_namesto_dropnamedroppedtotals              r!   _reap_mssql_dbsrW   a   s    HH)3/

C		(	(	(	F$*DIIf,=>&&/
 6==W	\\^W	=%D~D!  &w2ME!$//1 3 	;W	
' 
G	F > 
G	Fs*    <D<DD/7D* DD
D&c                     0 $ )N )r<   r=   s     r!   _mssql_temp_table_keyword_argsrZ   }   s    Ir"   c                     SU-   $ )Nz##rY   )r<   r=   	base_names      r!   _mssql_get_temp_table_namer]      s    )r"   c                 6   UR                  5       R                  SS9 n[        U5      nS SU R                  U R                  4 H  nUR                  US9 H  n[        U[        5       [        S[        5      [        S[        5      US9n[        U5      R                  XTS9 HS  nUR                  [        [        UR                  R                  /UR                  R                   /US   S95      5        MU     M     M     S S S 5        g ! , (       d  f       g = f)	Nr5   r6   dbo)schemaxyrT   )rT   )r8   r9   r   test_schematest_schema_2get_table_namesr   r   r   r   get_foreign_keysexecuter	   r
   cra   rb   )r<   r=   r?   	inspectorr`   tnametbfks           r!   r   r      s    		(	(	(	F$DM	UCOOS5F5FGF"22&2AJ3(3(! "$-888NBLL&0!#24466(F O B H 
G	F	Fs   C#D


Dc                 .    UR                   c  SUl         U$ )NrJ   )start)r<   sequences     r!   r   r      s    ~~Or"   N)
sqlalchemyr   r   r'   r   r   r`   r   r	   r
   r   r   testing.provisionr   r   r   r   r   r   r   r   r   r   for_dbr@   rC   rB   rW   rZ   r]   rY   r"   r!   <module>rs      sZ        $ *   * C ( 4 4 $ 3 6 - 8 g&- '-
 G$ %, '< < 	( (
" W
 
6 ( ) G$ % $**73 4, 7# $r"   