
    i                     F   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rd d	lmZ  ej        ej                  	 	 	 	 	 	 d,d            Z ej        ej                  d-d            Z ej        ej                  	 	 	 	 	 	 d.d            Z ej        ej                  	 	 	 	 	 	 d/d            Z ej        ej                  d0d            Z ej        ej                  	 	 	 	 	 	 d1d            Z ej        ej                  	 	 	 	 	 	 d2d            Z ej        ej                  	 	 	 	 	 	 d3d            Z ej        ej                  	 	 	 	 	 	 d4d!            Z  ej        ej!                  d5d#            Z" ej        ej#                  	 	 	 	 	 	 d6d%            Z$ ej        ej%                  	 	 	 	 	 	 d7d'            Z& ej        ej'                  	 	 	 	 	 	 d8d)            Z( ej        ej)                  	 	 	 	 	 	 d9d+            Z*dS ):    )TYPE_CHECKINGschema   )ops)
Operations   )_copy)sqla_14)Table
operationsr   	operationops.AlterColumnOpreturnNc                    | j         j                            | j         j        d           |j        }|j        }|j        }|j        }|j        }|j        }|j	        }|j
        }	|j        }
|j        }|j        }|j        }fd}|ra|r_| j                            |t#          j        ||          |          }|j        D ]'} ||          r| j                             |           ( | j         j        ||f||	|
|||||||d
|j         |re| j                            || j                            ||          |          }|j        D ])} ||          r| j                             |           (d S d S )Nc                 t    t          | t          j                   o| j         p|                               S N)
isinstance	sa_schemaPrimaryKeyConstraint_create_rule)
constraintcompilers    _/var/www/html/crypto-bot/backend/venv/lib/python3.11/site-packages/alembic/operations/toimpl.py_count_constraintz'alter_column.<locals>._count_constraint&   s<    j)*HIII 
''L:+B+B8+L+L	
    r   )
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   s                    @r   r5   r5      s    &99 H +M!3'?!E'K%JF4N+O(H&G 1
 
 
 
 

  < <!''[-88 ( 
 

 - 	< 	<J  ,, <//
;;; JO  %# 7+)  ,     ;!''!((e<< ( 
 

 - 	; 	;J  ,, ;..z:::; ;	; 	;r   ops.DropTableOpc                 j    | j                             |                    | j                             d S r   )r&   
drop_tableto_tablemigration_contextr   r   s     r   r=   r=   P   s:    O:788    r   ops.DropColumnOpc                     |                     | j                  } | j        j        |j        |fd|j        i|j         d S )Nr   )	to_columnr?   r&   drop_columnr+   r   r6   )r   r   r7   s      r   rD   rD   W   s_       !=>>FJOf -6-=AJ    r   ops.CreateIndexOpc                     |                     | j                  }i }|j         t          st	          d          |j        |d<    | j        j        |fi | d S )NSQLAlchemy 1.4+ requiredif_not_exists)to_indexr?   rH   r   NotImplementedErrorr&   create_index)r   r   idxr6   s       r   rK   rK   a   sp     

Z9
:
:C	B* 	B%&@AAA'5? JO +++++++r   ops.DropIndexOpc                     i }|j          t          st          d          |j         |d<    | j        j        |                    | j                  fi | d S )NrG   	if_exists)rO   r   rJ   r&   
drop_indexrI   r?   )r   r   r6   s      r   rP   rP   o   sx    	B& 	B%&@AAA#-;JO:788 
    r   ops.CreateTableOpr   c                 n    |                     | j                  }| j                            |           |S r   )r>   r?   r&   create_tabler   r   r1   s      r   rS   rS   ~   s5     z;<<EO  '''Lr   ops.RenameTableOpc                 ^    | j                             |j        |j        |j                   d S Nr   )r&   rename_tabler+   new_table_namer   r@   s     r   rX   rX      s=     O  i6y?O !     r   ops.CreateTableCommentOpc                 n    |                     | j                  }| j                            |           d S r   )r>   r?   r&   create_table_commentrT   s      r   r\   r\      s6     z;<<EO((/////r   ops.DropTableCommentOpc                 n    |                     | j                  }| j                            |           d S r   )r>   r?   r&   drop_table_commentrT   s      r   r_   r_      s6     z;<<EO&&u-----r   ops.AddColumnOpc                 ,   |j         }|j        }|j        }|j        }|j        t          |          }| j                            |||          } | j        j        ||fd|i| |j	        D ]6}t          |t          j                  s| j                            |           7|j        D ]}| j                            |           | j        j        j        o| j        j        j         }	|j        }
|
r|	r| j                            |           d S d S d S )Nr   r   )r+   r7   r   r6   r1   r
   r0   r&   
add_columnr3   r   r   r   r8   indexesrK   r'   supports_commentsinline_commentsr$   create_column_comment)r   r   r+   r7   r   r6   r:   r   indexwith_commentr$   s              r   rb   rb      sI   %JFF	B|v##Jv#FFAJOz6GG&GBGGGm 7 7
*i&DEE 	7O**:666 , ,$$U++++ 	1 	8'77  nG 6< 6--f555556 6 6 6r   ops.AddConstraintOpc                 j    | j                             |                    | j                             d S r   )r&   r8   to_constraintr?   r@   s     r   create_constraintrl      s<     O""
 <==    r   ops.DropConstraintOpc                     | j                             | j                            |j        |j        |j        |j                             d S rW   )r&   r4   r0   generic_constraintconstraint_namer+   constraint_typer   r@   s     r   r4   r4      s[     O##00% %#	 	1 	
 	
    r   ops.BulkInsertOpc                 ^    | j                             |j        |j        |j                   d S )N)multiinsert)r&   bulk_insertr1   rowsrt   r@   s     r   ru   ru      s;     OY5J       r   ops.ExecuteSQLOpc                 \    | j         j                            |j        |j                   d S )N)execution_options)r?   r&   executesqltextry   r@   s     r   execute_sqlr|      s<      %--Y-H .     r   )r   r   r   r   r   N)r   r   r   r;   r   N)r   r   r   rA   r   N)r   r   r   rE   r   N)r   r   r   rM   r   N)r   r   r   rQ   r   r   )r   r   r   rU   r   N)r   r   r   rZ   r   N)r   r   r   r]   r   N)r   r   r   r`   r   N)r   r   r   ri   r   N)r   r   r   rm   r   N)r   r   r   rr   r   N)r   r   r   rw   r   N)+typingr   
sqlalchemyr   r    r   baser   util.sqla_compatr
   r   sqlalchemy.sql.schemar   implementation_forAlterColumnOpr5   DropTableOpr=   DropColumnOprD   CreateIndexOprK   DropIndexOprP   CreateTableOprS   RenameTableOprX   CreateTableCommentOpr\   DropTableCommentOpr_   AddColumnOprb   AddConstraintOprl   DropConstraintOpr4   BulkInsertOpru   ExecuteSQLOpr|    r   r   <module>r      sK   !           * * * * * *             $ $ $ $ $ $ & & & & & & ,++++++ s011;;;;)<;;	;; ;; ;; 21;;| s//   0/ s/00);	   10 s011
,
,)<
,	
, 
, 
, 21
, s//   0/ s011)<   21 s011)<	   21 s78800)C0	0 0 0 980 s566..)A.	. . . 76. s//6 6 6 0/66 s233)>	   43 s344

)?
	
 
 
 54
 s/00);	   10 s/00);	   10  r   