
    +h.                        d dl Z d dlmZ d dlmZ d dlmZ d dlmZ dZ	ej                  Z
 ee
j                          e j                  d      ZddZdd	Ze
j!                  d
 e              g Zej                  j%                  d      $ eej                  d   j)                               Zn* eej,                  d   j.                  dd      Zer e       ZeD ]&  Zej                  j5                  ed
 ee             ( ej,                  d   j.                  Zd Zd Zd Z ej>                         r e        y e        y)    N)
fileConfig)MetaData)current_app)contextFzalembic.envc                     	 t         j                  d   j                  j                  |       S # t        t
        f$ r9 t         j                  d   j                  j                  j                  |       cY S w xY w)Nmigrate)bind)r   
extensionsdb
get_engine	TypeErrorAttributeErrorenginesgetbind_keys    \/var/www/html/venv/lib/python3.12/site-packages/flask_migrate/templates/flask-multidb/env.pyr   r      sk    J%%i033>>H>MM~& J%%i033;;??IIJs   ,/ AA76A7c                     	 t        |       j                  j                  d      j                  dd      S # t        $ r1 t        t        |       j                        j                  dd      cY S w xY w)NF)hide_password%z%%)r   urlrender_as_stringreplacer   strr   s    r   get_engine_urlr      sn    @(#''88 9 !!(d!3	4 @:h'++,44S$??@s   47 7A10A1sqlalchemy.urlSQLALCHEMY_BINDSr   
bind_namesr   c                 (   | dk(  rd} t        t        d      rt        j                  |    S t               }t        j                  j
                  j                         D ]2  }|j                  j                  d      | k(  s"|j                  |       4 |S )zReturn the metadata for a bind. N	metadatasr   )
hasattr	target_dbr!   r   metadatatablesvaluesinfor   
tometadata)r	   mts      r   get_metadatar+   >   s}    rzy+&""4(( 	
A&&--/ 66::j!T)LLO H    c            	      `   ddt         j                  j                  d      ii} t        D ],  }i x| |<   }t         j                  j	                  |d      |d<   . | j                         D ]  \  }}t        j                  d|xs dz         d|z  }t        j                  d|z         t        |d      5 }t        j                  |d   |t        |      d	
       t        j                         5  t        j                  |       ddd       ddd        y# 1 sw Y   xY w# 1 sw Y   xY w)aF  Run migrations in 'offline' mode.

    This configures the context with just a URL
    and not an Engine, though an Engine is acceptable
    here as well.  By skipping the Engine creation
    we don't even need a DBAPI to be available.

    Calls to context.execute() here emit the given string to the
    script output.

    r    r   r   Migrating database %s	<default>z%s.sqlzWriting output to %swT)r   output_buffertarget_metadataliteral_bindsengine_nameN)r   configget_main_optionr   get_section_optionitemsloggerr'   open	configurer+   begin_transactionrun_migrations)r   namerecfile_buffers        r   run_migrations_offlinerC   M   s+     	7>>112BC
G
  O  ^^66t=MNE
O ]]_ 9	c+t/B{CD4*U23% 	9J$ ,T 2"	 **, 9&&489	9 	9	99 9	9 	9s$   4:D$.DD$D!D$$D-	c            
      .   d } t         j                  d   j                  }|j                  d      | |d<   ddt	               ii}t
        D ]  }i x||<   }t	        |      |d<    |j                         D ]L  \  }}|d   }|j                         x|d<   }t        r|j                         |d	<   :|j                         |d	<   N 	 |j                         D ]c  \  }}t        j                  d
|xs dz         t        j                  d|d   d|z  d|z  t        |      d| t        j                   |       e t        r(|j#                         D ]  }|d	   j%                           |j#                         D ]  }|d	   j'                           	 |j#                         D ]  }|d   j+                           y#  |j#                         D ]  }|d	   j)                            xY w# |j#                         D ]  }|d   j+                           w xY w)zRun migrations in 'online' mode.

    In this scenario we need to create an Engine
    and associate a connection with the context.

    c                    t        t        j                  dd      rr|d   }t        |j                        t        t
              dz   k\  rDd}|j                  D ]  }|j                         rd} |rg |d d  t        j                  d       y y y y )NautogenerateFr      TzNo changes in schema detected.)	getattrr6   cmd_optslenupgrade_ops_listr   is_emptyr:   r'   )r   revision
directivesscriptemptyupgrade_opss         r   process_revision_directivesz:run_migrations_online.<locals>.process_revision_directives   s    6??NE:]F6**+s:/BB#)#:#: &K&//1 %& $&JqMKK @A  C ;r,   r   rR   Nr    enginer   
connectiontransactionr.   r/   z%s_upgradesz%s_downgrades)rT   upgrade_tokendowngrade_tokenr2   r4    )r   r
   configure_argsr   r   r   r9   connectUSE_TWOPHASEbegin_twophasebeginr:   r'   r   r<   r+   r>   r&   preparecommitrollbackclose)rR   	conf_argsr   r?   r@   rS   conns          r   run_migrations_onlinerd   t   s6   
B &&y1@@I}}23;3N	/0
 	Xz|$G  2  "D1H2 ]]_ .	cX#)>>#33LD!%!4!4!6C!%C.&  		5ID#KK/43F;GH |,+d2 /$ 6 ,T 2	
  ""t4		5 ~~' -M"**,- >># 	(C%%'	( >># 	&C##%	&>># 	*C'')	*>># 	&C##%	&s   CF< <+G''G* **H)N) logginglogging.configr   
sqlalchemyr   flaskr   alembicr   r[   r6   config_file_name	getLoggerr:   r   r   set_main_optionr   r   listkeysrH   r
   r   get_bind_namesr	   set_section_optionr#   r+   rC   rd   is_offline_moderX   r,   r   <module>rr      sE    %    
 6"" #			=	)J@   ')9 :
,-9k(();<AACDJ[33I>AA)41N#%
 ?DNN%% =?? ""9-00	$9NE&P 7r,   