a
    g	g                     @   s  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rLd dlmZ eejd	d
ddddZeejd	dddddZeejd	dddddZeejd	dddddZeejd	dddddZeejd	dddddZeejd	dddd d!Zeejd	d"ddd#d$Zeejd	d%ddd&d'Zeej d	d(ddd)d*Z!eej"d	d+ddd,d-Z#eej$d	d.ddd/d0Z%eej&d	d1ddd2d3Z'eej(d	d4ddd5d6Z)dS )7    )TYPE_CHECKINGschema   )ops)
Operations   )_copy)Tabler   zops.AlterColumnOpN)
operations	operationreturnc                    s"  | j j| j jd  |j}|j}|j}|j}|j}|j}|j	}|j
}	|j}
|j}|j}|j} fdd}|r|r| jj|t|||d}|jD ]}||r| j | q| j j||f||	|
|||||||d
|j |r| jj|| j|||d}|jD ]}||r | j | q d S )Nc                    s    t | tj o| j p|  S N)
isinstance	sa_schemaPrimaryKeyConstraintZ_create_rule)
constraintcompiler \/var/www/html/llm_bihealth/app/venv/lib/python3.9/site-packages/alembic/operations/toimpl.py_count_constraint#   s    z'alter_column.<locals>._count_constraintr   )
nullableserver_defaultnametype_r   existing_typeexisting_server_defaultexisting_nullablecommentexisting_comment)impldialectZstatement_compilerr   r   r   Zmodify_typecolumn_name
table_namer   Zmodify_server_defaultZmodify_nameZmodify_nullableZmodify_commentr    
schema_objtabler   ZColumnconstraintsdrop_constraintalter_columnkwcolumnadd_constraint)r   r   r   r   r   r   r#   r$   r   r   Znew_column_namer   r   r    r   tr   r   r   r   r)      sf    



r)   zops.DropTableOpc                 C   s   | j || j d S r   )r!   
drop_tableto_tablemigration_contextr   r   r   r   r   r.   M   s    
r.   zops.DropColumnOpc                 C   s0   | | j}| jj|j|fd|ji|j d S )Nr   )Z	to_columnr0   r!   drop_columnr$   r   r*   )r   r   r+   r   r   r   r2   T   s    r2   zops.CreateIndexOpc                 C   s   | | j}| j| d S r   )to_indexr0   r!   create_index)r   r   idxr   r   r   r4   ^   s    r4   zops.DropIndexOpc                 C   s   | j || j d S r   )r!   
drop_indexr3   r0   r1   r   r   r   r6   f   s    
r6   zops.CreateTableOpr
   c                 C   s   | | j}| j| |S r   )r/   r0   r!   create_tabler   r   r&   r   r   r   r7   m   s    r7   zops.RenameTableOpc                 C   s   | j j|j|j|jd d S Nr   )r!   rename_tabler$   Znew_table_namer   r1   r   r   r   r:   v   s    r:   zops.CreateTableCommentOpc                 C   s   | | j}| j| d S r   )r/   r0   r!   create_table_commentr8   r   r   r   r;      s    r;   zops.DropTableCommentOpc                 C   s   | | j}| j| d S r   )r/   r0   r!   drop_table_commentr8   r   r   r   r<      s    r<   zops.AddColumnOpc                 C   s   |j }|j}|j}|j}|jd ur*t|}| jj|||d}| jj||fd|i| |j	D ]}t
|tjs\| j| q\|jD ]}| j| q| jjjo| jjj }	|j}
|
r|	r| j| d S )Nr   r   )r$   r+   r   r*   r&   r	   r%   r!   
add_columnr'   r   r   r   r,   Zindexesr4   r"   Zsupports_commentsZinline_commentsr   Zcreate_column_comment)r   r   r$   r+   r   r*   r-   r   indexZwith_commentr   r   r   r   r=      s&    




r=   zops.AddConstraintOpc                 C   s   | j || j d S r   )r!   r,   Zto_constraintr0   r1   r   r   r   create_constraint   s    
r?   zops.DropConstraintOpc                 C   s(   | j | jj|j|j|j|jd d S r9   )r!   r(   r%   Zgeneric_constraintZconstraint_namer$   Zconstraint_typer   r1   r   r   r   r(      s    r(   zops.BulkInsertOpc                 C   s   | j j|j|j|jd d S )N)multiinsert)r!   bulk_insertr&   rowsr@   r1   r   r   r   rA      s    rA   zops.ExecuteSQLOpc                 C   s   | j jj|j|jd d S )N)execution_options)r0   r!   executeZsqltextrC   r1   r   r   r   execute_sql   s    rE   )*typingr   Z
sqlalchemyr   r    r   baser   Zutil.sqla_compatr	   Zsqlalchemy.sql.schemar
   Zimplementation_forZAlterColumnOpr)   ZDropTableOpr.   ZDropColumnOpr2   ZCreateIndexOpr4   ZDropIndexOpr6   ZCreateTableOpr7   ZRenameTableOpr:   ZCreateTableCommentOpr;   ZDropTableCommentOpr<   ZAddColumnOpr=   ZAddConstraintOpr?   ZDropConstraintOpr(   ZBulkInsertOprA   ZExecuteSQLOprE   r   r   r   r   <module>   sp   
?

	










