U
    Y]h]                     @   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 =/tmp/pip-unpacked-wheel-u4jwnyja/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*      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)r1   r
   NotImplementedErrorr"   
drop_tableto_tablemigration_contextr   r   r+   r   r   r   r3   P   s    


r3   zops.DropColumnOpc                 C   s0   | | j}| jj|j|fd|ji|j d S )Nr   )Z	to_columnr5   r"   drop_columnr%   r   r+   )r   r   r,   r   r   r   r7   ]   s     r7   zops.CreateIndexOpc                 C   sD   | | j}i }|jd k	r0ts&td|j|d< | jj|f| d S Nr0   if_not_exists)to_indexr5   r9   r
   r2   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 r/   )r1   r
   r2   r"   
drop_indexr:   r5   r6   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 r8   )r9   r
   r2   r4   r5   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   r@      s
      r@   zops.CreateTableCommentOpc                 C   s   | | j}| j| d S r   )r4   r5   r"   create_table_commentr   r   r'   r   r   r   rB      s    rB   zops.DropTableCommentOpc                 C   s   | | j}| j| d S r   )r4   r5   r"   drop_table_commentrC   r   r   r   rD      s    rD   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   rE      s&    




rE   zops.AddConstraintOpc                 C   s   | j || j d S r   )r"   r-   Zto_constraintr5   rA   r   r   r   create_constraint   s    
rG   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   rA   r   r   r   r)      s    r)   zops.BulkInsertOpc                 C   s   | j j|j|j|jd d S )N)multiinsert)r"   bulk_insertr'   ZrowsrH   rA   r   r   r   rI      s
      rI   zops.ExecuteSQLOpc                 C   s   | j jj|j|jd d S )N)execution_options)r5   r"   executeZsqltextrJ   rA   r   r   r   execute_sql   s     rL   )+typingr   Z
sqlalchemyr   r    r   baser   Zutil.sqla_compatr	   r
   Zsqlalchemy.sql.schemar   Zimplementation_forZAlterColumnOpr*   ZDropTableOpr3   ZDropColumnOpr7   ZCreateIndexOpr;   ZDropIndexOpr=   ZCreateTableOpr>   ZRenameTableOpr@   ZCreateTableCommentOprB   ZDropTableCommentOprD   ZAddColumnOprE   ZAddConstraintOprG   ZDropConstraintOpr)   ZBulkInsertOprI   ZExecuteSQLOprL   r   r   r   r   <module>   s   
 >

 	
 

 
 
 
 

 
 
 
 