o
    hc                     @  s  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rd dlmZ d dlmZ d dlm Z  G dd deZ!ee
ddBd$d%Z"eeddCd'd(Z#eeddDd*d+Z$eeddEd-d.Z%eeddFd0d1Z&eeddGd3d4Z'eeddHd6d7Z(dId9d:Z)dJd=d>Z*eeddKd@dAZ+dS )L    )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                      sx   e Zd ZdZdZdZdZejddhh dh df Zd	Z	d fddZ
d fddZdd ZdddZdddZ  ZS )
OracleImploracleF/ VARCHARVARCHAR2>   BIGINTNUMBERDECIMALINTEGERNUMERICSMALLINT>   FLOATDOUBLEDOUBLE_PRECISION returnNonec                   s(   t  j|i | | jd| j| _d S )Noracle_batch_separator)super__init__context_optsgetbatch_separator)selfargkw	__class__r+   f/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/alembic/ddl/oracle.pyr0   /   s   
zOracleImpl.__init__	constructr   Optional[CursorResult]c                   s6   t  j|g|R i |}| jr| jr| | j |S )N)r/   _execas_sqlr3   static_output)r4   r:   argsr6   resultr7   r+   r9   r<   5   s   zOracleImpl._execc                 C  sX   |d urt dd|}t dd|}|d ur(t dd|}t dd|}| }||kS )Nz
^\((.+)\)$z\1z^\"?'(.+)'\"?$)resubstrip)r4   inspector_columnmetadata_columnrendered_metadata_defaultrendered_inspector_defaultr+   r+   r9   compare_server_default;   s    z!OracleImpl.compare_server_defaultc                 C     |  d d S )NzSET TRANSACTION READ WRITEr<   r4   r+   r+   r9   
emit_beginW      zOracleImpl.emit_beginc                 C  rI   )NCOMMITrJ   rK   r+   r+   r9   emit_commitZ   rM   zOracleImpl.emit_commit)r,   r-   )r:   r   r,   r;   )__name__
__module____qualname____dialect__transactional_ddlr3   command_terminatorr   type_synonymsidentity_attrs_ignorer0   r<   rH   rL   rO   __classcell__r+   r+   r7   r9   r   #   s     
r   r   elementr   compilerr   r,   strc                 K  s(   dt || j| jt|| jfi |f S )Nz%s %s)r	   
table_nameschema
add_columncolumnrY   rZ   r6   r+   r+   r9   visit_add_column^   s   ra   r   c                 K  s0   dt || j| jt|| j| jrdf S df S )N%s %s %sNULLzNOT NULL)r	   r\   r]   alter_columncolumn_namenullabler`   r+   r+   r9   visit_column_nullableh   s   
rg   r   c                 K  s.   dt || j| jt|| jdt|| j f S )Nrb   z%s)r	   r\   r]   rd   re   r   type_r`   r+   r+   r9   visit_column_types   s
   
ri   r   c                 K  s*   dt || j| jt|| jt|| jf S )Nz%s RENAME COLUMN %s TO %s)r	   r\   r]   r   re   newnamer`   r+   r+   r9   visit_column_name~   s
   

rk   r   c                 K  s@   dt || j| jt|| j| jd urdt|| j f S df S )Nrb   z
DEFAULT %szDEFAULT NULL)r	   r\   r]   rd   re   defaultr   r`   r+   r+   r9   visit_column_default   s   

rm   r
   c                 K  s:   d}|j | jd ur| jndt }|j| j| j|dS )Nz9COMMENT ON COLUMN {table_name}.{column_name} IS {comment}r   )r\   re   comment)sql_compilerrender_literal_valuern   r   Stringformatr\   re   )rY   rZ   r6   ddlrn   r+   r+   r9   visit_column_comment   s   rt   r   c                 K  s"   dt || j| jt|| jd f S )Nz%s RENAME TO %s)r	   r\   r]   r   new_table_namer`   r+   r+   r9   visit_rename_table   s   rv   namec                 C  s   dt | | S )Nz	MODIFY %sr   )rZ   rw   r+   r+   r9   rd      rM   rd   r_   Column[Any]c                 K  s   d| j |fi | S )NzADD %s)get_column_specification)rZ   r_   r6   r+   r+   r9   r^      s   r^   r   c                 K  sJ   dt || j| jt|| jf }| jd u r|d7 }|S ||| j7 }|S )Nz%s %s zDROP IDENTITY)r	   r\   r]   rd   re   rl   visit_identity_column)rY   rZ   r6   textr+   r+   r9   rz      s   

rz   )rY   r   rZ   r   r,   r[   )rY   r   rZ   r   r,   r[   )rY   r   rZ   r   r,   r[   )rY   r   rZ   r   r,   r[   )rY   r   rZ   r   r,   r[   )rY   r
   rZ   r   r,   r[   )rY   r   rZ   r   r,   r[   )rZ   r   rw   r[   r,   r[   )rZ   r   r_   rx   r,   r[   )rY   r   rZ   r   ),
__future__r   rA   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   ra   rg   ri   rk   rm   rt   rv   rd   r^   rz   r+   r+   r+   r9   <module>   sX   ;	



	
