
    +hc                       d dl mZ 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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rd dlmZ d dlmZ d dlm Z   G d de      Z! ee
d      	 	 	 	 	 	 d(d       Z" eed      	 	 	 	 	 	 d)d       Z# eed      	 	 	 	 	 	 d*d        Z$ eed      	 	 	 	 	 	 d+d!       Z% eed      	 	 	 	 	 	 d,d"       Z& eed      	 	 	 	 	 	 d-d#       Z' eed      	 	 	 	 	 	 d.d$       Z(d/d%Z)d0d&Z* eed      	 	 	 	 d1d'       Z+y)2    )annotationsN)Any)Optional)TYPE_CHECKING)sqltypes   )	AddColumn)alter_table)ColumnComment)ColumnDefault)
ColumnName)ColumnNullable)
ColumnTypeformat_column_name)format_server_default)format_table_name)format_type)IdentityColumnDefault)RenameTable)DefaultImpl   )compiles)OracleDDLCompiler)CursorResult)Columnc                       e Zd ZdZdZdZdZej                  ddhh dh dfz   Zd	Z	d fd
Z
d fdZd ZddZddZ xZS )
OracleImploracleF/ VARCHARVARCHAR2>   BIGINTNUMBERDECIMALINTEGERNUMERICSMALLINT>   FLOATDOUBLEDOUBLE_PRECISION c                z    t        |   |i | | j                  j                  d| j                        | _        y )Noracle_batch_separator)super__init__context_optsgetbatch_separator)selfargkw	__class__s      E/var/www/html/venv/lib/python3.12/site-packages/alembic/ddl/oracle.pyr1   zOracleImpl.__init__/   s9    #$$#0044$d&:&: 
    c                    t        |   |g|i |}| j                  r'| j                  r| j	                  | j                         |S )N)r0   _execas_sqlr4   static_output)r5   	constructargsr7   resultr8   s        r9   r<   zOracleImpl._exec5   sC    y64626;;4//t334r:   c                    |.t        j                  dd|      }t        j                  dd|      }|>t        j                  dd|      }t        j                  dd|      }|j                         }||k7  S )Nz
^\((.+)\)$z\1z^\"?'(.+)'\"?$)resubstrip)r5   inspector_columnmetadata_columnrendered_metadata_defaultrendered_inspector_defaults        r9   compare_server_defaultz!OracleImpl.compare_server_default;   s     %0(*u&?)% )+!5*C)% &1)+u&@*& *,!5*D*& *D)I)I)K&)-FFFr:   c                &    | j                  d       y )NzSET TRANSACTION READ WRITEr<   r5   s    r9   
emit_beginzOracleImpl.emit_beginW   s    

/0r:   c                &    | j                  d       y )NCOMMITrL   rM   s    r9   emit_commitzOracleImpl.emit_commitZ   s    

8r:   )returnNone)r?   r   rR   zOptional[CursorResult])__name__
__module____qualname____dialect__transactional_ddlr4   command_terminatorr   type_synonymsidentity_attrs_ignorer1   r<   rJ   rN   rQ   __classcell__)r8   s   @r9   r   r   #   s^    KO--	JI/1 M
 
G81r:   r   r   c                x    t        || j                  | j                        dt        || j                  fi |S )N )r
   
table_nameschema
add_columncolumnelementcompilerr7   s      r9   visit_add_columnrf   ^   s7    
 	Hg00'..A8W^^2r2 r:   c                    t        || j                  | j                        dt        || j                        d| j
                  rdS dS )Nr^   NULLzNOT NULL)r
   r_   r`   alter_columncolumn_namenullablerc   s      r9   visit_column_nullablerl   h   sT    
 	Hg00'..AXw223""2  )32 r:   c           	         t        || j                  | j                        dt        || j                        ddt        || j                        z  S )Nr^   z%s)r
   r_   r`   ri   rj   r   type_rc   s      r9   visit_column_typero   s   sG    
 	Hg00'..AXw223{8W]]33 r:   c                    t        || j                  | j                        dt        || j                        dt        || j
                        S )Nz RENAME COLUMN z TO )r
   r_   r`   r   rj   newnamerc   s      r9   visit_column_namerr   ~   sB    
 	Hg00'..A8W%8%898W__5 r:   c           	         t        || j                  | j                        dt        || j                        d| j
                  dt        || j
                        z  S dS )Nr^   z
DEFAULT %szDEFAULT NULL)r
   r_   r`   ri   rj   defaultr   rc   s      r9   visit_column_defaultru      so    
 	Hg00'..AXw223 * 07??KK  	    	 r:   c                    d}|j                   j                  | j                  | j                  ndt        j                               }|j                  | j                  | j                  |      S )Nz9COMMENT ON COLUMN {table_name}.{column_name} IS {comment}r!   )r_   rj   comment)sql_compilerrender_literal_valuerw   r   Stringformatr_   rj   )rd   re   r7   ddlrw   s        r9   visit_column_commentr}      si     FC##88#OO7RG
 ::%%''   r:   c                x    t        || j                  | j                        dt        || j                  d       S )Nz RENAME TO )r
   r_   r`   r   new_table_namerc   s      r9   visit_rename_tabler      s6    
 	Hg00'..A(G$:$:DA r:   c                     dt        | |      z  S )Nz	MODIFY %sr   )re   names     r9   ri   ri      s    +Hd;;;r:   c                .    d | j                   |fi |z  S )NzADD %s)get_column_specification)re   rb   r7   s      r9   ra   ra      s     7h77E"EEEr:   c                    t        || j                  | j                        dt        || j                        d}| j
                  |dz  }|S ||j                  | j
                        z  }|S )Nr^   zDROP IDENTITY)r
   r_   r`   ri   rj   rt   visit_identity_column)rd   re   r7   texts       r9   r   r      sj    
 	Hg00'..AXw223D ..w??r:   )rd   r	   re   r   rR   str)rd   r   re   r   rR   r   )rd   r   re   r   rR   r   )rd   r   re   r   rR   r   )rd   r   re   r   rR   r   )rd   r   re   r   rR   r   )rd   r   re   r   rR   r   )re   r   r   r   rR   r   )re   r   rb   zColumn[Any]rR   r   )rd   r   re   r   ),
__future__r   rC   typingr   r   r   sqlalchemy.sqlr   baser	   r
   r   r   r   r   r   r   r   r   r   r   r   implr   util.sqla_compatr   sqlalchemy.dialects.oracle.baser   sqlalchemy.engine.cursorr   sqlalchemy.sql.schemar   r   rf   rl   ro   rr   ru   r}   r   ri   ra   r   r-   r:   r9   <module>r      s   # 	     #         $ ' #  '   'A5,8 8v 
)X"3  
.(#'8 $ 
*h#4   
*h#4   
-"&7 # 
-"&7 #" 
+x $5 !<F 

*".? +r:   