U
    #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 a/var/www/html/me.goteku.com/backend/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   | j || j d S r   )r"   
drop_tableto_tablemigration_contextr   r   r   r   r   r0   P   s    
r0   zops.DropColumnOpc                 C   s0   | | j}| jj|j|fd|ji|j d S )Nr   )Z	to_columnr2   r"   drop_columnr%   r   r,   )r   r   r-   r   r   r   r4   W   s     r4   zops.CreateIndexOpc                 C   sD   | | j}i }|jd k	r0ts&td|j|d< | jj|f| d S )NSQLAlchemy 1.4+ requiredif_not_exists)to_indexr2   r6   r
   NotImplementedErrorr"   create_index)r   r   idxr,   r   r   r   r9   a   s    

r9   zops.DropIndexOpc                 C   s@   i }|j d k	r$tstd|j |d< | jj|| jf| d S )Nr5   	if_exists)r;   r
   r8   r"   
drop_indexr7   r2   )r   r   r,   r   r   r   r<   o   s    


r<   zops.CreateTableOpr   c                 C   s   | | j}| j| |S r   )r1   r2   r"   create_table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   r3   r   r   r   r@      s
      r@   zops.CreateTableCommentOpc                 C   s   | | j}| j| d S r   )r1   r2   r"   create_table_commentr>   r   r   r   rA      s    rA   zops.DropTableCommentOpc                 C   s   | | j}| j| d S r   )r1   r2   r"   drop_table_commentr>   r   r   r   rB      s    rB   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indexesr9   r#   Zsupports_commentsZinline_commentsr    Zcreate_column_comment)r   r   r%   r-   r   r,   r/   r   indexZwith_commentr    r   r   r   rC      s&    




rC   zops.AddConstraintOpc                 C   s   | j || j d S r   )r"   r.   Zto_constraintr2   r3   r   r   r   create_constraint   s    
rE   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   r3   r   r   r   r*      s    r*   zops.BulkInsertOpc                 C   s   | j j|j|j|jd d S )N)multiinsert)r"   bulk_insertr'   rowsrF   r3   r   r   r   rG      s
      rG   zops.ExecuteSQLOpc                 C   s   | j jj|j|jd d S )N)execution_options)r2   r"   executeZsqltextrI   r3   r   r   r   execute_sql   s     rK   )+typingr   Z
sqlalchemyr   r    r   baser   Zutil.sqla_compatr	   r
   Zsqlalchemy.sql.schemar   Zimplementation_forZAlterColumnOpr+   ZDropTableOpr0   ZDropColumnOpr4   ZCreateIndexOpr9   ZDropIndexOpr<   ZCreateTableOpr=   ZRenameTableOpr@   ZCreateTableCommentOprA   ZDropTableCommentOprB   ZAddColumnOprC   ZAddConstraintOprE   ZDropConstraintOpr*   ZBulkInsertOprG   ZExecuteSQLOprK   r   r   r   r   <module>   s   
 >

 	
 

 
 
 
 

 
 
 
 