o
    ‹å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r&d dlmZ e ej¡			
				d9dd„ƒZe ej¡d:dd„ƒZe ej¡			
				d;dd„ƒZe ej¡			
				d<dd„ƒZe ej¡d=dd„ƒZe ej¡			
				d>dd „ƒZe ej¡			
		!		d?d"d#„ƒZe ej¡			
		$		d@d%d&„ƒZe ej¡			
		'		dAd(d)„ƒZe ej ¡dBd+d,„ƒZ!e ej"¡			
		-		dCd.d/„ƒZ#e ej$¡			
		0		dDd1d2„ƒZ%e ej&¡			
		3		dEd4d5„ƒZ'e ej(¡			
		6		dFd7d8„ƒZ)dS )Gé    )ÚTYPE_CHECKING©Úschemaé   )Úops)Ú
Operationsé   )Ú_copy)ÚTableÚ
operationsr   Ú	operationúops.AlterColumnOpÚreturnNc                    s   | j j | j jd ¡‰ |j}|j}|j}|j}|j}|j}|j	}|j
}	|j}
|j}|j}|j}‡ fdd„}|rU|rU| jj|t ||¡|d�}|jD ]}||ƒrT| j  |¡ qH| j j||f||	|
|||||||dœ
|j¤Ž |rŒ| jj|| j ||¡|d�}|jD ]}||ƒr‹| j  |¡ qd S d S )Nc                    s    t | tjƒ o| j p|  ˆ ¡S ©N)Ú
isinstanceÚ	sa_schemaÚPrimaryKeyConstraintÚ_create_rule)Ú
constraint©Úcompiler© úU/var/www/html/flaskapp/venv/lib/python3.10/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ÚdialectÚstatement_compilerr   r    r   Úmodify_typeÚcolumn_nameÚ
table_namer   Úmodify_server_defaultÚmodify_nameÚmodify_nullableÚ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   Únew_column_namer   r!   r"   r   Útr   r   r   r   r2      sn   ÿ
ý
€þôóý
€ør2   úops.DropTableOpc                 C   ó8   i }|j d ur|j |d< | jj| | j¡fi |¤Ž d S ©NÚ	if_exists)r;   r#   Ú
drop_tableÚto_tableÚmigration_context©r   r   r3   r   r   r   r<   O   s   


ÿ
ÿr<   úops.DropColumnOpc                 C   s0   |  | j¡}| jj|j|fd|ji|j¤Ž d S )Nr   )Ú	to_columnr>   r#   Údrop_columnr(   r   r3   )r   r   r4   r   r   r   rB   Y   s   ÿÿ
ÿrB   úops.CreateIndexOpc                 C   s<   |  | j¡}i }|jd ur|j|d< | jj|fi |¤Ž d S ©NÚif_not_exists)Úto_indexr>   rE   r#   Úcreate_index)r   r   Úidxr3   r   r   r   rG   c   s
   

rG   úops.DropIndexOpc                 C   r9   r:   )r;   r#   Ú
drop_indexrF   r>   r?   r   r   r   rJ   n   s   


ÿ
þrJ   úops.CreateTableOpr
   c                 C   s<   i }|j d ur|j |d< | | j¡}| jj|fi |¤Ž |S rD   )rE   r=   r>   r#   Úcreate_table)r   r   r3   r.   r   r   r   rL   z   s   

rL   úops.RenameTableOpc                 C   ó   | j j|j|j|jd� d S ©Nr   )r#   Úrename_tabler(   Únew_table_namer   ©r   r   r   r   r   rP   †   ó   
ÿrP   úops.CreateTableCommentOpc                 C   ó   |  | j¡}| j |¡ d S r   )r=   r>   r#   Úcreate_table_comment©r   r   r.   r   r   r   rV   �   ó   rV   úops.DropTableCommentOpc                 C   rU   r   )r=   r>   r#   Údrop_table_commentrW   r   r   r   rZ   —   rX   rZ   ú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oS| jjj }	|j}
|
rc|	re| j |¡ d S d S d S )Nr   r   )r(   r4   r   r3   r.   r	   r-   r#   Ú
add_columnr0   r   r   r   r5   ÚindexesrG   r$   Úsupports_commentsÚinline_commentsr!   Úcreate_column_comment)r   r   r(   r4   r   r3   r7   r   ÚindexÚwith_commentr!   r   r   r   r\   Ÿ   s*   

€


þÿr\   úops.AddConstraintOpc                 C   s   | j  | | j¡¡ d S r   )r#   r5   Úto_constraintr>   rR   r   r   r   Úcreate_constraint»   s   
ÿre   úops.DropConstraintOpc                 C   s(   | j  | jj|j|j|j|jd�¡ d S rO   )r#   r1   r-   Úgeneric_constraintÚconstraint_namer(   Úconstraint_typer   rR   r   r   r   r1   Ä   s   üÿr1   úops.BulkInsertOpc                 C   rN   )N)Úmultiinsert)r#   Úbulk_insertr.   Úrowsrk   rR   r   r   r   rl   Ò   rS   rl   úops.ExecuteSQLOpc                 C   s   | j jj|j|jd� d S )N)Úexecution_options)r>   r#   ÚexecuteÚsqltextro   rR   r   r   r   Úexecute_sqlÛ   s   
ÿrr   )r   r   r   r   r   N)r   r   r   r8   r   N)r   r   r   r@   r   N)r   r   r   rC   r   N)r   r   r   rI   r   N)r   r   r   rK   r   r
   )r   r   r   rM   r   N)r   r   r   rT   r   N)r   r   r   rY   r   N)r   r   r   r[   r   N)r   r   r   rc   r   N)r   r   r   rf   r   N)r   r   r   rj   r   N)r   r   r   rn   r   N)*Útypingr   Ú
sqlalchemyr   r   Ú r   Úbaser   Úutil.sqla_compatr	   Úsqlalchemy.sql.schemar
   Úimplementation_forÚAlterColumnOpr2   ÚDropTableOpr<   ÚDropColumnOprB   ÚCreateIndexOprG   ÚDropIndexOprJ   ÚCreateTableOprL   ÚRenameTableOprP   ÚCreateTableCommentOprV   ÚDropTableCommentOprZ   ÚAddColumnOpr\   ÚAddConstraintOpre   ÚDropConstraintOpr1   ÚBulkInsertOprl   ÚExecuteSQLOprr   r   r   r   r   Ú<module>   sÊ   
ÿÿþ
>
	ÿÿþ
	ÿÿþ


ÿÿþ
ÿÿþ
ÿÿþ
ÿÿþ

ÿÿþ
ÿÿþ
ÿÿþ
ÿÿþ