o
    8 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/ VARCHARZVARCHAR2>   NUMERICSMALLINTBIGINTINTEGERNUMBERDECIMAL>   FLOATDOUBLE_PRECISIONDOUBLE returnNonec                   s(   t  j|i | | jd| j| _d S )NZoracle_batch_separator)super__init__context_optsgetbatch_separator)selfargkw	__class__r*   Z/var/www/html/figdemos/bartoux_crm/venv/lib/python3.10/site-packages/alembic/ddl/oracle.pyr.   /   s   
zOracleImpl.__init__	constructr   Optional[CursorResult]c                   s6   t  j|g|R i |}| jr| jr| | j |S )N)r-   _execas_sqlr1   static_output)r2   r8   argsr4   resultr5   r*   r7   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)r2   inspector_columnmetadata_columnrendered_metadata_defaultrendered_inspector_defaultr*   r*   r7   compare_server_default;   s    z!OracleImpl.compare_server_defaultc                 C     |  d d S )NzSET TRANSACTION READ WRITEr:   r2   r*   r*   r7   
emit_beginW      zOracleImpl.emit_beginc                 C  rG   )NCOMMITrH   rI   r*   r*   r7   emit_commitZ   rK   zOracleImpl.emit_commit)r+   r,   )r8   r   r+   r9   )__name__
__module____qualname____dialect__transactional_ddlr1   command_terminatorr   type_synonymsidentity_attrs_ignorer.   r:   rF   rJ   rM   __classcell__r*   r*   r5   r7   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rW   rX   r4   r*   r*   r7   visit_add_column^   s   r_   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	   rZ   r[   alter_columncolumn_namenullabler^   r*   r*   r7   visit_column_nullableh   s   
re   r   c                 K  s.   dt || j| jt|| jdt|| j f S )Nr`   z%s)r	   rZ   r[   rb   rc   r   type_r^   r*   r*   r7   visit_column_types   s
   
rg   r   c                 K  s*   dt || j| jt|| jt|| jf S )Nz%s RENAME COLUMN %s TO %s)r	   rZ   r[   r   rc   newnamer^   r*   r*   r7   visit_column_name~   s
   

ri   r   c                 K  s@   dt || j| jt|| j| jd urdt|| j f S df S )Nr`   z
DEFAULT %szDEFAULT NULL)r	   rZ   r[   rb   rc   defaultr   r^   r*   r*   r7   visit_column_default   s   

rk   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   )rZ   rc   comment)sql_compilerrender_literal_valuerl   r   StringformatrZ   rc   )rW   rX   r4   ddlrl   r*   r*   r7   visit_column_comment   s   rr   r   c                 K  s"   dt || j| jt|| jd f S )Nz%s RENAME TO %s)r	   rZ   r[   r   new_table_namer^   r*   r*   r7   visit_rename_table   s   rt   namec                 C  s   dt | | S )Nz	MODIFY %sr   )rX   ru   r*   r*   r7   rb      rK   rb   r]   Column[Any]c                 K  s   d| j |fi | S )NzADD %s)get_column_specification)rX   r]   r4   r*   r*   r7   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	   rZ   r[   rb   rc   rj   visit_identity_column)rW   rX   r4   textr*   r*   r7   rx      s   

rx   )rW   r   rX   r   r+   rY   )rW   r   rX   r   r+   rY   )rW   r   rX   r   r+   rY   )rW   r   rX   r   r+   rY   )rW   r   rX   r   r+   rY   )rW   r
   rX   r   r+   rY   )rW   r   rX   r   r+   rY   )rX   r   ru   rY   r+   rY   )rX   r   r]   rv   r+   rY   )rW   r   rX   r   ),
__future__r   r?   typingr   r   r   sqlalchemy.sqlr   baser   r	   r
   r   r   r   r   r   r   r   r   r   r   implr   Zutil.sqla_compatr   Zsqlalchemy.dialects.oracle.baser   Zsqlalchemy.engine.cursorr   sqlalchemy.sql.schemar   r   r_   re   rg   ri   rk   rr   rt   rb   r\   rx   r*   r*   r*   r7   <module>   sX   ;	



	
