a
    g	g                     @  s8  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 deZ!eeddddd d!d"Z"eedd#ddd d$d%Z#eedd&ddd d'd(Z$eedd)ddd d*d+Z%eedd,ddd d-d.Z&eedd/ddd d0d1Z'eedd2ddd d3d4Z(dddd5d6d7Z)dd8dd9d:d;Z*eedd<dd=d>d?Z+dS )@    )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                      s   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
d fddZ
ddd fddZdd Zd
dddZd
dddZ  ZS )
OracleImploracleF/ ZVARCHARZVARCHAR2>   ZBIGINTZINTEGERNUMBERZNUMERICZSMALLINTZDECIMAL>   ZDOUBLEFLOATZDOUBLE_PRECISION None)returnc                   s(   t  j|i | | jd| j| _d S )NZoracle_batch_separator)super__init__Zcontext_optsgetbatch_separator)selfargkw	__class__r!   U/var/www/html/llm_bihealth/app/venv/lib/python3.9/site-packages/alembic/ddl/oracle.pyr%   ,   s    zOracleImpl.__init__r   zOptional[CursorResult])	constructr#   c                   s6   t  j|g|R i |}| jr2| jr2| | j |S )N)r$   _execZas_sqlr'   Zstatic_output)r(   r.   argsr*   resultr+   r!   r-   r/   2   s    zOracleImpl._execc                 C  sX   |d ur$t dd|}t dd|}|d urPt dd|}t dd|}| }||kS )Nz
^\((.+)\)$z\1z^\"?'(.+)'\"?$)resubstrip)r(   Zinspector_columnZmetadata_columnZrendered_metadata_defaultZrendered_inspector_defaultr!   r!   r-   compare_server_default8   s     z!OracleImpl.compare_server_defaultc                 C  s   |  d d S )NzSET TRANSACTION READ WRITEr/   r(   r!   r!   r-   
emit_beginT   s    zOracleImpl.emit_beginc                 C  s   |  d d S )NZCOMMITr6   r7   r!   r!   r-   emit_commitW   s    zOracleImpl.emit_commit)__name__
__module____qualname__Z__dialect__Ztransactional_ddlr'   Zcommand_terminatorr   Ztype_synonymsZidentity_attrs_ignorer%   r/   r5   r8   r9   __classcell__r!   r!   r+   r-   r       s   r   r   r	   r   str)elementcompilerr#   c                 K  s(   dt || j| jt|| jfi |f S )Nz%s %s)r
   
table_nameschema
add_columncolumnr?   r@   r*   r!   r!   r-   visit_add_column[   s    rF   r   c                 K  s,   dt || j| jt|| j| jr$dndf S )N%s %s %sZNULLzNOT NULL)r
   rA   rB   alter_columncolumn_nameZnullablerE   r!   r!   r-   visit_column_nullablee   s
    
rJ   r   c                 K  s.   dt || j| jt|| jdt|| j f S )NrG   z%s)r
   rA   rB   rH   rI   r   type_rE   r!   r!   r-   visit_column_typep   s
    
rL   r   c                 K  s*   dt || j| jt|| jt|| jf S )Nz%s RENAME COLUMN %s TO %s)r
   rA   rB   r   rI   ZnewnamerE   r!   r!   r-   visit_column_name{   s
    

rM   r   c                 K  s<   dt || j| jt|| j| jd ur4dt|| j ndf S )NrG   z
DEFAULT %szDEFAULT NULL)r
   rA   rB   rH   rI   defaultr   rE   r!   r!   r-   visit_column_default   s    
rO   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   )rA   rI   comment)Zsql_compilerZrender_literal_valuerP   r   StringformatrA   rI   )r?   r@   r*   ZddlrP   r!   r!   r-   visit_column_comment   s    rS   r   c                 K  s"   dt || j| jt|| jd f S )Nz%s RENAME TO %s)r
   rA   rB   r   Znew_table_namerE   r!   r!   r-   visit_rename_table   s    rT   )r@   namer#   c                 C  s   dt | | S )Nz	MODIFY %sr   )r@   rU   r!   r!   r-   rH      s    rH   r   )r@   rD   r#   c                 K  s   d| j |fi | S )NzADD %s)Zget_column_specification)r@   rD   r*   r!   r!   r-   rC      s    rC   r   )r?   r@   c                 K  sN   dt || j| jt|| jf }| jd u r6|d7 }|S ||| j7 }|S d S )Nz%s %s zDROP IDENTITY)r
   rA   rB   rH   rI   rN   visit_identity_column)r?   r@   r*   textr!   r!   r-   rV      s    

rV   ),
__future__r   r2   typingr   r   r   Zsqlalchemy.ext.compilerr   Zsqlalchemy.sqlr   baser	   r
   r   r   r   r   r   r   r   r   r   r   r   implr   Zsqlalchemy.dialects.oracle.baser   Zsqlalchemy.engine.cursorr   Zsqlalchemy.sql.schemar   r   rF   rJ   rL   rM   rO   rS   rT   rH   rC   rV   r!   r!   r!   r-   <module>   sV   ;	


	