U
    ^g%i]                     @   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
 ddl	mZ erXd 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d0d1Z&eej'd
d2ddd3d4Z(eej)d
d5ddd6d7Z*dS )8    )TYPE_CHECKINGschema   )ops)
Operations   )_copy)sqla_14)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 X/var/www/html/api-medvista/venv/lib/python3.8/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   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+      sh     



r+   zops.DropTableOpc                 C   s@   i }|j d k	r$tstd|j |d< | jj|| jf| d S NSQLAlchemy 1.4+ required	if_exists)r2   r
   NotImplementedErrorr"   
drop_tableto_tablemigration_contextr   r   r,   r   r   r   r4   P   s    


r4   zops.DropColumnOpc                 C   s0   | | j}| jj|j|fd|ji|j d S )Nr   )Z	to_columnr6   r"   drop_columnr%   r   r,   )r   r   r-   r   r   r   r8   ]   s     r8   zops.CreateIndexOpc                 C   sD   | | j}i }|jd k	r0ts&td|j|d< | jj|f| d S Nr1   if_not_exists)to_indexr6   r:   r
   r3   r"   create_index)r   r   idxr,   r   r   r   r<   g   s    

r<   zops.DropIndexOpc                 C   s@   i }|j d k	r$tstd|j |d< | jj|| jf| d S r0   )r2   r
   r3   r"   
drop_indexr;   r6   r7   r   r   r   r>   u   s    


r>   zops.CreateTableOpr   c                 C   sD   i }|j d k	r$tstd|j |d< || j}| jj|f| |S r9   )r:   r
   r3   r5   r6   r"   create_table)r   r   r,   r'   r   r   r   r?      s    

r?   zops.RenameTableOpc                 C   s   | j j|j|j|jd d S Nr   )r"   rename_tabler%   Znew_table_namer   r   r   r   r   r   rA      s
      rA   zops.CreateTableCommentOpc                 C   s   | | j}| j| d S r   )r5   r6   r"   create_table_commentr   r   r'   r   r   r   rC      s    rC   zops.DropTableCommentOpc                 C   s   | | j}| j| d S r   )r5   r6   r"   drop_table_commentrD   r   r   r   rE      s    rE   zops.AddColumnOpc                 C   s   |j }|j}|j}|j}|jd k	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indexesr<   r#   Zsupports_commentsZinline_commentsr    Zcreate_column_comment)r   r   r%   r-   r   r,   r/   r   indexZwith_commentr    r   r   r   rF      s&    




rF   zops.AddConstraintOpc                 C   s   | j || j d S r   )r"   r.   Zto_constraintr6   rB   r   r   r   create_constraint   s    
rH   zops.DropConstraintOpc                 C   s(   | j | jj|j|j|j|jd d S r@   )r"   r*   r&   Zgeneric_constraintZconstraint_namer%   Zconstraint_typer   rB   r   r   r   r*      s    r*   zops.BulkInsertOpc                 C   s   | j j|j|j|jd d S )N)multiinsert)r"   bulk_insertr'   rowsrI   rB   r   r   r   rJ      s
      rJ   zops.ExecuteSQLOpc                 C   s   | j jj|j|jd d S )N)execution_options)r6   r"   executeZsqltextrL   rB   r   r   r   execute_sql   s     rN   )+typingr   Z
sqlalchemyr   r    r   baser   Zutil.sqla_compatr	   r
   Zsqlalchemy.sql.schemar   Zimplementation_forZAlterColumnOpr+   ZDropTableOpr4   ZDropColumnOpr8   ZCreateIndexOpr<   ZDropIndexOpr>   ZCreateTableOpr?   ZRenameTableOprA   ZCreateTableCommentOprC   ZDropTableCommentOprE   ZAddColumnOprF   ZAddConstraintOprH   ZDropConstraintOpr*   ZBulkInsertOprJ   ZExecuteSQLOprN   r   r   r   r   <module>   s   
 >

 	
 

 
 
 
 

 
 
 
 