
    Wd                     t   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	 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 ddlmZ ddlmZ ddlmZ ddlmZ  ej        d          d             Z ej        d          d             Z ej        d          d             Zd Z ej        d          d             Z ej        d          d             Z ej        d          d             Z ej        d          d             Z ej        d          d             ZdS )    )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)run_reap_dbs)temp_table_keyword_argsmssqlc                     |                                  }|                     |d|          }|dk    r|                    d          }|r|                    |          }	 |                                 |S # t          j        $ r Y d S w xY w)N+)
drivernamepyodbc )query)get_backend_namesetupdate_query_stringget_dialectr   NoSuchModuleError)urldriver	query_strbackendnew_urls        _/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/sqlalchemy/dialects/mssql/provision.pyr   r      s    ""$$GggGGGVV!<g==G++B+'' 9--i88      tts   $A: :BBc                    |                                                     d          5 }|                    d|z             |                    d|z             |                    d|z             |                    d|z             |                    d           |                    d           d d d            d S # 1 swxY 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exec_driver_sqlcfgengidentconns       r'   _mssql_create_dbr4   +   s#   		(	(	(	F	F 
<$1E9:::?%G	
 	
 	
 	>F	
 	
 	
 	X-...8999:;;;
< 
< 
< 
< 
< 
< 
< 
< 
< 
< 
< 
< 
< 
< 
< 
< 
< 
<s   BCCCc                     |                                                     d          5 }t          ||           d d d            d S # 1 swxY w Y   d S )Nr)   r*   )r,   r-   _mssql_drop_ignorer/   s       r'   _mssql_drop_dbr7   :   s    		(	(	(	F	F ($4'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   AAAc                     	 |                      d|z             t          j        d|           dS # t          j        $ r }t          j        d|           Y d }~dS d }~ww xY w)Nzdrop database %szReaped db: %sTzcouldn't drop db: %sF)r.   r   infor   DatabaseErrorwarning)r3   r2   errs      r'   r6   r6   @   s|     	/%7888%(((t   *C000uuuuus   -1 A  AA c                 D   t          j        d|            t          |           }|                                                    d          5 }t          j        dd                    |                     |                    d          }d |D             }t                      }|D ]}||v r|                    |           dx}}	t          |d	          D ]\  }	}
t          ||
          r|d	z  }t          j        d
||	           d d d            d S # 1 swxY w Y   d S )Nzdb reaper connecting to %rr)   r*   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)c                 :    h | ]\  }|                                 S  )lower).0dbnames     r'   	<setcomp>z"_reap_mssql_dbs.<locals>.<setcomp>^   s"    ===	V\\^^===    r      z-Dropped %d out of %d stale databases detected)r   r9   r   r,   r-   joinr.   r   add	enumerater6   )r"   identsr1   r3   to_reap	all_namesto_dropnamedroppedtotalrB   s              r'   _reap_mssql_dbsrP   Q   s   H)3///


C		(	(	(	F	F 
$*DIIf,=,=>>>&&/
 
 >=W===	%% 	" 	"Dv~~D!!!%&w22 	 	ME6!$// 1;We	
 	
 	
'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   B;DDDc                     i S )Nr?   )r0   r1   s     r'   _mssql_temp_table_keyword_argsrR   m   s    IrD   c                     d|z   S )Nz##r?   )r0   r1   	base_names      r'   _mssql_get_temp_table_namerU   r   s    )rD   c                 v   |                                                     d          5 }t          |          }d d| j        | j        fD ]}|                    |          D ]}t          |t                      t          dt                    t          dt                    |          }t          |          
                    ||          D ]P}|                    t          t          |j        j        g|j        j        g|d                                        Q	 d d d            d S # 1 swxY w Y   d S )	Nr)   r*   dbo)schemaxyrM   )rM   )r,   r-   r   test_schematest_schema_2get_table_namesr   r   r   r   get_foreign_keysexecuter	   r
   crY   rZ   )r0   r1   r3   	inspectorrX   tnametbfks           r'   r   r   w   s   		(	(	(	F	F $DMM	UCOS5FG 	 	F"22&2AA  JJ3((3((!   "$--88v8NN  BLL&0!#246(F      	                 s   C7D..D25D2c                 "    |j         d|_         |S )NrE   )start)r0   sequences     r'   r   r      s    ~OrD   N)
sqlalchemyr   r   r   r   r   rX   r   r	   r
   r   r   testing.provisionr   r   r   r   r   r   r   r   r   for_dbr4   r7   r6   rP   rR   rU   r?   rD   r'   <module>rk      s                                 $ $ $ $ $ $ * * * * * *             * * * * * * C C C C C C ( ( ( ( ( ( 4 4 4 4 4 4 4 4 4 4 4 4 $ $ $ $ $ $ 3 3 3 3 3 3 - - - - - - 8 8 8 8 8 8 G$$  %$& '< < < ( ( (
  " W
 
 
6  ((  )( G$$  %$ +#*733  43, 7##  $#  rD   