o
    h                     @  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dAd#d$Z"eeddBd&d'Z#eeddCd)d*Z$eeddDd,d-Z%eeddEd/d0Z&eeddFd2d3Z'eeddGd5d6Z(dHd8d9Z)dId<d=Z*eeddJd?d@Z+dS )K    )annotationsN)Any)Optional)TYPE_CHECKING)compiles)sqltypes   )	AddColumn)alter_table)ColumnComment)ColumnDefault)
ColumnName)ColumnNullable)
ColumnTypeformat_column_name)format_server_default)format_table_name)format_type)IdentityColumnDefault)RenameTable)DefaultImpl)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*   U/var/www/html/aiguide_backend/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_sqlr2   static_output)r3   r9   argsr5   resultr6   r*   r8   r;   2   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)r3   inspector_columnmetadata_columnrendered_metadata_defaultrendered_inspector_defaultr*   r*   r8   compare_server_default8   s    z!OracleImpl.compare_server_defaultc                 C     |  d d S )NzSET TRANSACTION READ WRITEr;   r3   r*   r*   r8   
emit_beginT      zOracleImpl.emit_beginc                 C  rH   )NCOMMITrI   rJ   r*   r*   r8   emit_commitW   rL   zOracleImpl.emit_commit)r+   r,   )r9   r   r+   r:   )__name__
__module____qualname____dialect__transactional_ddlr2   command_terminatorr   type_synonymsidentity_attrs_ignorer/   r;   rG   rK   rN   __classcell__r*   r*   r6   r8   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rX   rY   r5   r*   r*   r8   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
   r[   r\   alter_columncolumn_namenullabler_   r*   r*   r8   visit_column_nullablee   s   
rf   r   c                 K  s.   dt || j| jt|| jdt|| j f S )Nra   z%s)r
   r[   r\   rc   rd   r   type_r_   r*   r*   r8   visit_column_typep   s
   
rh   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   rd   newnamer_   r*   r*   r8   visit_column_name{   s
   

rj   r   c                 K  s@   dt || j| jt|| j| jd urdt|| j f S df S )Nra   z
DEFAULT %szDEFAULT NULL)r
   r[   r\   rc   rd   defaultr   r_   r*   r*   r8   visit_column_default   s   

rl   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[   rd   comment)sql_compilerrender_literal_valuerm   r   Stringformatr[   rd   )rX   rY   r5   ddlrm   r*   r*   r8   visit_column_comment   s   rs   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*   r8   visit_rename_table   s   ru   namec                 C  s   dt | | S )Nz	MODIFY %sr   )rY   rv   r*   r*   r8   rc      rL   rc   r^   Column[Any]c                 K  s   d| j |fi | S )NzADD %s)get_column_specification)rY   r^   r5   r*   r*   r8   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\   rc   rd   rk   visit_identity_column)rX   rY   r5   textr*   r*   r8   ry      s   

ry   )rX   r	   rY   r   r+   rZ   )rX   r   rY   r   r+   rZ   )rX   r   rY   r   r+   rZ   )rX   r   rY   r   r+   rZ   )rX   r   rY   r   r+   rZ   )rX   r   rY   r   r+   rZ   )rX   r   rY   r   r+   rZ   )rY   r   rv   rZ   r+   rZ   )rY   r   r^   rw   r+   rZ   )rX   r   rY   r   ),
__future__r   r@   typingr   r   r   sqlalchemy.ext.compilerr   sqlalchemy.sqlr   baser	   r
   r   r   r   r   r   r   r   r   r   r   r   implr   sqlalchemy.dialects.oracle.baser   sqlalchemy.engine.cursorr   sqlalchemy.sql.schemar   r   r`   rf   rh   rj   rl   rs   ru   rc   r]   ry   r*   r*   r*   r8   <module>   sX    ;	



	
