
    g7                       S SK Jr  S SKrS SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S S	K
Jr  S S
KJr  S SKJr  S SKJr  S SKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ r   SSK!J"r"  SSK#J$r$  SSK$J%r%  SSK&J'r'  \(       a6  S S KJ(r(  S S!K)J*r*  S S"K)J+r+  S S#K,J-r-  S S$K.J/r/  S S%K.J0r0  S S&K1J2r2  S S'K3J4r4  SS(KJ5r5   " S) S*\"5      r6 " S+ S,\\5      r7 " S- S.\\5      r8\'" \7S/5            S9S0 j5       r9\'" \8S/5            S:S1 j5       r:\'" \S/5      S;S2 j5       r;      S<S3 jr<\'" \S/5            S=S4 j5       r=\'" \S/5            S>S5 j5       r>\'" \S/5            S?S6 j5       r?\'" \S/5            S@S7 j5       r@\'" \ S/5            SAS8 j5       rAg)B    )annotationsN)Any)Dict)List)Optional)TYPE_CHECKING)Union)types)Column)CreateIndex)
Executable)ClauseElement   )	AddColumn)alter_column)alter_table)ColumnDefault)
ColumnName)ColumnNullable)
ColumnType)format_column_name)format_server_default)format_table_name)format_type)RenameTable)DefaultImpl   )util)sqla_compat)compiles)Literal)MSDDLCompiler)MSSQLCompiler)CursorResult)Index)Table)TableClause)
TypeEngine)_ServerDefaultc                  l  ^  \ rS rSrSrSrSr\R                  SS14-   r\R                  S-   r	SU 4S jjr
SU 4S	 jjrSS
 jrSU 4S jjr        S                       SU 4S jjjrSS jr        SU 4S jjr S       SU 4S jjjrS rU 4S jr      SS jrSrU =r$ )	MSSQLImpl3   mssqlTGOVARCHARNVARCHAR)minvaluemaxvalue
nominvalue
nomaxvaluecyclecachec                |   > [         TU ]  " U0 UD6  U R                  R                  SU R                  5      U l        g )Nmssql_batch_separator)super__init__context_optsgetbatch_separator)selfargkw	__class__s      Y/Users/Alptekin/Desktop/izin_takip/venv/lib/python3.13/site-packages/alembic/ddl/mssql.pyr:   MSSQLImpl.__init__B   s9    #$$#0044#T%9%9 
    c                   > [         TU ]  " U/UQ70 UD6nU R                  (       a,  U R                  (       a  U R	                  U R                  5        U$ N)r9   _execas_sqlr=   static_output)r>   	constructargsr@   resultrA   s        rB   rG   MSSQLImpl._execH   sC    y64626;;4//t334rD   c                @    U R                  SU R                  -   5        g )NzBEGIN TRANSACTION)rI   command_terminator)r>   s    rB   
emit_beginMSSQLImpl.emit_beginN   s    .1H1HHIrD   c                   > [         TU ]  5         U R                  (       a.  U R                  (       a  U R	                  U R                  5        g g g rF   )r9   emit_commitrH   r=   rI   )r>   rA   s    rB   rS   MSSQLImpl.emit_commitQ   s8    ;;4//t334 0;rD   c           	       > Ub"  Ub  UnS nO@Uc  [         R                  " S5      eO&U
b
  Ub  U
nUnS nOUb  [         R                  " S5        Sn[        R                  " XI5      (       d  [        R
                  " XI5      (       a
  SnXKS'   XS'   [        TU ]  " UU4UUUUU
S.UD6  USLa=  USL a8  U	SLd  Uc  U R                  [        UUSU5      5        Ub  [        TU ]  UUUUS	9  Ub  [        TU ]  XXuS
9  g g )NzhMS-SQL ALTER COLUMN operations with NULL or NOT NULL require the existing_type or a new type_ be passed.zMS-SQL ALTER COLUMN operations that specify type_= should also specify a nullable= or existing_nullable= argument to avoid implicit conversion of NOT NULL columns to NULL.FTserver_defaultexisting_server_default)nullabletype_schemaexisting_typeexisting_nullablesys.default_constraints)rZ   rV   )rZ   name)
r   CommandErrorwarnr   _server_default_is_identity_server_default_is_computedr9   r   rG   _ExecDropConstraint)r>   
table_namecolumn_namerX   rV   r^   rY   rZ   r[   rW   r\   r@   used_defaultrA   s                rB   r   MSSQLImpl.alter_columnV   s|       !&&''>  ' *u/@(H "MEII/ 22
 
44
 
  L#1 ,C()		
 '/		
 		
 &<5+@&e3~7M

'"#1	 )$!#1	 %  G  !  rD   c                P   UR                   R                  SS 5      =(       d    SnUR                  c   eU HQ  nXAR                  R                  ;  d  M  UR                  R	                  [        U[        R                  5      5        MS     U R                  [        U40 UD65        g )Nmssql_include )
kwargsr<   tablecappend_columnr   sqltypesNullTyperG   r   )r>   indexr@   ri   cols        rB   create_indexMSSQLImpl.create_index   s~     (($?E2{{&&& C++--'))&h6G6G*HI ! 	

;u++,rD   c                J  > U R                   (       a  U R                  SU R                  R                  R	                  U5      -  5        [
        TU ]  " X40 UD6  U R                  SU R                  R                  R	                  U5      -  5        g [
        TU ]  " X40 UD6  g )NzSET IDENTITY_INSERT %s ONzSET IDENTITY_INSERT %s OFF)rH   rG   dialectidentifier_preparerformat_tabler9   bulk_insert)r>   rl   rowsr@   rA   s       rB   ry   MSSQLImpl.bulk_insert   s     ;;JJ+,,22??FG G2r2JJ,,,22??FG
 G2r2rD   c                h  > UR                  SS5      nU(       a  U R                  [        XSU5      5        UR                  SS5      nU(       a  U R                  [        XSU5      5        UR                  SS5      nU(       a  U R                  [        XU5      5        [        TU ]  " X4SU0UD6  g )Nmssql_drop_defaultFr]   mssql_drop_checkzsys.check_constraintsmssql_drop_foreign_keyrZ   )poprG   rc   _ExecDropFKConstraintr9   drop_column)	r>   rd   columnrZ   r@   drop_default
drop_checkdrop_fksrA   s	           rB   r   MSSQLImpl.drop_column   s     vv2E:JJ#(A6
 VV.6
JJ#(?
 662E:JJ,ZHIJDvDDrD   c                v    Ub  [         R                  " SSU5      nUb  [         R                  " SSU5      nXC:g  $ )Nz[\(\) \"\'] )resub)r>   inspector_columnmetadata_columnrendered_metadata_defaultrendered_inspector_defaults        rB   compare_server_default MSSQLImpl.compare_server_default   sM     %0(*$=)% &1 *,$>*& *FFrD   c                   > [         TU ]  X5      u  p4nUc4  Ub1  U(       d*  UR                  b  UR                  R                  (       a  SnX4U4$ )NF)r9   _compare_identity_defaultr   primary_key)r>   metadata_identityinspector_identitydiffignoredis_alterrA   s         rB   r   #MSSQLImpl._compare_identity_default   sX    "''"C#
x
 %"."))5"))55 Hh&&rD   c                    UR                  S0 5      R                  5       nUR                  S5      (       d  UR                  SS 5        UR                  S5      (       d  UR                  SS 5        U$ )Ndialect_optionsri   mssql_clustered)r<   copyr   )r>   reflected_objectkindoptionss       rB    adjust_reflected_dialect_options*MSSQLImpl.adjust_reflected_dialect_options  sa     #&&'8"=BBD{{?++KK.{{,--KK)40rD   )r=   )returnNone)rJ   r   r   zOptional[CursorResult])NFNNNNNN)rd   strre   r   rX   Optional[bool]rV   z/Optional[Union[_ServerDefault, Literal[False]]]r^   Optional[str]rY   Optional[TypeEngine]rZ   r   r[   r   rW   zOptional[_ServerDefault]r\   r   r@   r   r   r   )rq   r%   r@   r   r   r   )rl   zUnion[TableClause, Table]rz   z
List[dict]r@   r   r   r   rF   )rd   r   r   Column[Any]rZ   r   r   r   )r   Dict[str, Any]r   r   r   r   )__name__
__module____qualname____firstlineno____dialect__transactional_ddlr=   r   type_synonymsidentity_attrs_ignorer:   rG   rP   rS   r   rs   ry   r   r   r   r   __static_attributes____classcell__)rA   s   @rB   r+   r+   3   s   KO--)Z1H0JJM'== A 
J5 $( "&* $.2<@,0VV V !	V

V V $V V ,V ":V *V V 
V Vp	-3.36@3HK3	3( !%	EE E 	E 
E E4G,'$	 .	69			 	rD   r+   c                  6    \ rS rSrSr          SS jrSrg)rc   i  Fc                4    Xl         X l        X0l        X@l        g rF   )tnamecolnamerY   rZ   )r>   r   r   rY   rZ   s        rB   r:   _ExecDropConstraint.__init__  s     

rD   )r   rZ   r   rY   N)
r   r   r   zUnion[Column[Any], str]rY   r   rZ   r   r   r   r   r   r   r   inherit_cacher:   r   rj   rD   rB   rc   rc     s<    M

 )
 	

 
 

rD   rc   c                  2    \ rS rSrSr        SS jrSrg)r   i'  Fc                (    Xl         X l        X0l        g rF   )r   r   rZ   )r>   r   r   rZ   s       rB   r:   _ExecDropFKConstraint.__init__*  s     
rD   )r   rZ   r   N)r   r   r   r   rZ   r   r   r   r   rj   rD   rB   r   r   '  s,    M#.8E	rD   r   r-   c           	         U R                   U R                  U R                  U R                  4u  p4pVSUUU[	        XU5      U(       a	  US-   S.-  $ SS.-  $ )Na  declare @const_name varchar(256)
select @const_name = QUOTENAME([name]) from %(type)s
where parent_object_id = object_id('%(schema_dot)s%(tname)s')
and col_name(parent_object_id, parent_column_id) = '%(colname)s'
exec('alter table %(tname_quoted)s drop constraint ' + @const_name).r   )typer   r   tname_quoted
schema_dot)rZ   r   r   rY   r   )elementcompilerr@   rZ   r   r   rY   s          rB   _exec_drop_col_constraintr   2  su    
 		%!F7G
 )(6B&,fslJ	
 
 35J	
 
rD   c                    U R                   U R                  U R                  pTnSUU[        XU5      U(       a	  US-   S.-  $ SS.-  $ )Nay  declare @const_name varchar(256)
select @const_name = QUOTENAME([name]) from
sys.foreign_keys fk join sys.foreign_key_columns fkc
on fk.object_id=fkc.constraint_object_id
where fkc.parent_object_id = object_id('%(schema_dot)s%(tname)s')
and col_name(fkc.parent_object_id, fkc.parent_column_id) = '%(colname)s'
exec('alter table %(tname_quoted)s drop constraint ' + @const_name)r   r   )r   r   r   r   )rZ   r   r   r   )r   r   r@   rZ   r   r   s         rB   _exec_drop_col_fk_constraintr   K  sa     %^^W]]GOO7FG )(6B&,fsl	J  35	J rD   c                x    [        XR                  U R                  5      < S[        XR                  40 UD6< 3$ N )r   rd   rZ   mssql_add_columnr   r   r   r@   s      rB   visit_add_columnr   _  s3     	H00'..A>>8R8 rD   c                .    SU R                   " U40 UD6-  $ )NzADD %s)get_column_specification)r   r   r@   s      rB   r   r   g  s     h77E"EEErD   c                    [        XR                  U R                  5      < S[        XR                  5      < S[        XR                  5      < SU R                  (       a  S< 3$ S< 3$ )Nr   NULLzNOT NULL)r   rd   rZ   r   re   r   r[   rX   r   s      rB   visit_column_nullabler   m  s^    
 	H00'..AX223H334""2	  )32	 rD   c                    [        XR                  U R                  5      < S[        XR                  5      < S[        XR                  5      < 3$ )Nz ADD DEFAULT z FOR )r   rd   rZ   r   defaultr   re   r   s      rB   visit_column_defaultr   y  s<     	H00'..Ah88%8%89 rD   c           	         S[        XR                  U R                  5      < S[        XR                  5      < S[        XR
                  5      < S3$ )NEXEC sp_rename 'r   ', z
, 'COLUMN')r   rd   rZ   r   re   newnamer   s      rB   visit_rename_columnr     s<    
 	($6$6G8%8%898__5 rD   c                    [        XR                  U R                  5      < S[        XR                  5      < S[        XR                  5      < 3$ r   )r   rd   rZ   r   re   r   rY   r   s      rB   visit_column_typer     s<    
 	H00'..AX223Hmm, rD   c                z    S[        XR                  U R                  5      < S[        XR                  S 5      < 3$ )Nr   r   )r   rd   rZ   new_table_namer   s      rB   visit_rename_tabler     s2    
 	($6$6G($:$:DA rD   )r   rc   r   r#   r   r   )r   r   r   r#   r   r   )r   r   r   r"   r   r   )r   r"   r   r   r   r   )r   r   r   r"   r   r   )r   r   r   r"   r   r   )r   r   r   r"   r   r   )r   r   r   r"   r   r   )r   r   r   r"   r   r   )B
__future__r   r   typingr   r   r   r   r   r	   
sqlalchemyr
   ro   sqlalchemy.schemar   r   sqlalchemy.sql.baser   sqlalchemy.sql.elementsr   baser   r   r   r   r   r   r   r   r   r   r   r   implr   r   r   r   util.sqla_compatr    r!   sqlalchemy.dialects.mssql.baser"   r#   sqlalchemy.engine.cursorr$   sqlalchemy.sql.schemar%   r&   sqlalchemy.sql.selectabler'   sqlalchemy.sql.type_apir(   r)   r+   rc   r   r   r   r   r   r   r   r   r   r   rj   rD   rB   <module>r      sJ   # 	        ( $ ) * 1         $ ' #      '<<5++52$a aH*m  J  

w' ,9 (0 

)".; *& 
)W FF%0FF 
.'"'4 # 
-!		&3		 "	 
*g#0  
*g#0  
+w$1  rD   