Ë
    ¦#ijû(  ã                   óF   — d dl mZ d dlmZmZmZ d dlmZ  G d„ de«      Zy)é    )ÚBaseDatabaseSchemaEditor)ÚNOT_PROVIDEDÚFÚUniqueConstraint)Ú
LOOKUP_SEPc                   ó  ‡ — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZed„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ «       Zˆ fd„Zˆ fd„Zˆ fd„Zˆ fd„Zˆ fd„Zddœd„Zˆ fd„Z d„ Z!ˆ fd „Z"ˆ fd!„Z#ˆ fd"„Z$d#„ Z%ˆ fd$„Z&ˆ fd%„Z'ˆ xZ(S )&ÚDatabaseSchemaEditorz+RENAME TABLE %(old_table)s TO %(new_table)szMODIFY %(column)s %(type)s NULLz#MODIFY %(column)s %(type)s NOT NULLz2MODIFY %(column)s %(type)s%(collation)s%(comment)sz(ALTER COLUMN %(column)s SET DEFAULT NULLz)ALTER TABLE %(table)s DROP INDEX %(name)szY, ADD CONSTRAINT %(name)s FOREIGN KEY (%(column)s) REFERENCES %(to_table)s(%(to_column)s)z/ALTER TABLE %(table)s DROP FOREIGN KEY %(name)sz DROP INDEX %(name)s ON %(table)sz?ALTER TABLE %(table)s RENAME INDEX %(old_name)s TO %(new_name)szGALTER TABLE %(table)s ADD CONSTRAINT %(name)s PRIMARY KEY (%(columns)s)z&ALTER TABLE %(table)s DROP PRIMARY KEYz9CREATE INDEX %(name)s ON %(table)s (%(columns)s)%(extra)sz+ALTER TABLE %(table)s COMMENT = %(comment)sNc                 ó2   — | j                   j                  ryy)Nz8ALTER TABLE %(table)s DROP CONSTRAINT IF EXISTS %(name)sz)ALTER TABLE %(table)s DROP CHECK %(name)s)Ú
connectionÚmysql_is_mariadb©Úselfs    úY/var/www/html/office/venv/lib/python3.12/site-packages/django/db/backends/mysql/schema.pyÚsql_delete_checkz%DatabaseSchemaEditor.sql_delete_check"   s   € à�?‰?×+Ò+ð NØ:ó    c                 ó"  — | j                   j                  «        | j                   j                   j                  || j                   j                   j                  «      }t	        |t
        «      r t	        |t        «      r|j                  «       }|S ©N)r   Úensure_connectionÚescapeÚencodersÚ
isinstanceÚstrÚbytesÚdecode)r   ÚvalueÚquoteds      r   Úquote_valuez DatabaseSchemaEditor.quote_value+   sf   € Ø�‰×)Ñ)Ô+à—‘×+Ñ+×2Ñ2Ø�4—?‘?×-Ñ-×6Ñ6ó
ˆô �eœSÔ!¤j°¼Ô&?Ø—]‘]“_ˆFØˆr   c                 ó�   — |j                  | j                  «      }|d uxr& |j                  «       | j                  j                  v S r   )Údb_typer   ÚlowerÚ_limited_data_types©r   Úfieldr   s      r   Ú_is_limited_data_typez*DatabaseSchemaEditor._is_limited_data_type5   s?   € Ø—-‘- §¡Ó0ˆà˜4Ðò GØ—‘“ 4§?¡?×#FÑ#FÐFð	
r   c                 ó~   — |j                  | j                  «      }|xr |j                  «       j                  d«      S )N)ÚblobÚtext)r   r   r    Úendswithr"   s      r   Ú_is_text_or_blobz%DatabaseSchemaEditor._is_text_or_blob<   s1   € Ø—-‘- §¡Ó0ˆØÒE˜7Ÿ=™=›?×3Ñ3Ð4DÓEÐEr   c                 óŒ   — | j                  |«      dv }|r| j                  |«      ry| j                  s| j                  |«      S y©N)Ú r   TF)Úeffective_defaultr)   Ú$_supports_limited_data_type_defaultsr$   ©r   r#   Údefault_is_emptys      r   Úskip_defaultz!DatabaseSchemaEditor.skip_default@   sH   € Ø×1Ñ1°%Ó8¸IÐEÐÙ × 5Ñ 5°eÔ <ØØ×8Ò8Ø×-Ñ-¨eÓ4Ð4Ør   c                 ó¢   — | j                  |«      dv }|r| j                  |«      ry| j                  |«      r| j                  j                  syyr+   )r-   r)   r$   r   r   r/   s      r   Úskip_default_on_alterz*DatabaseSchemaEditor.skip_default_on_alterH   sM   € Ø×1Ñ1°%Ó8¸IÐEÐÙ × 5Ñ 5°eÔ <ØØ×%Ñ% eÔ,°T·_±_×5UÒ5Uð Ør   c                 ób   — | j                   j                  ry| j                   j                  dk\  S )NT)é   r   é   )r   r   Úmysql_versionr   s    r   r.   z9DatabaseSchemaEditor._supports_limited_data_type_defaultsR   s)   € ð �?‰?×+Ò+ØØ�‰×,Ñ,°
Ñ:Ð:r   c                 óŠ   •— | j                   j                  s| j                  r| j                  |«      ryt        ‰| �  |«      S )Nz(%s))r   r   r.   r$   ÚsuperÚ_column_default_sql)r   r#   Ú	__class__s     €r   r:   z(DatabaseSchemaEditor._column_default_sqlY   s<   ø€ à—‘×0Ò0Ø×9Ò9Ø×*Ñ*¨5Ô1ð Ü‰wÑ*¨5Ó1Ð1r   c                 ó@  •— t         ‰| �  ||«       | j                  |«      r||j                  d t        fvrg| j                  |«      }| j                  d| j                  |j                  j                  «      | j                  |j                  «      dœz  |g«       y y y )Nz%UPDATE %(table)s SET %(column)s = %%s)ÚtableÚcolumn)r9   Ú	add_fieldr1   Údefaultr   r-   ÚexecuteÚ
quote_nameÚ_metaÚdb_tabler>   )r   Úmodelr#   r-   r;   s       €r   r?   zDatabaseSchemaEditor.add_fieldd   s“   ø€ Ü‰Ñ˜% Ô'ð ×Ñ˜UÔ#¨¯©¸dÄLÐ=QÑ(QØ $× 6Ñ 6°uÓ =ÐØ�L‰LØ7à!Ÿ_™_¨U¯[©[×-AÑ-AÓBØ"Ÿo™o¨e¯l©lÓ;ññð
 #Ð#õð )RÐ#r   c                 óº   •— t        |t        «      r:|j                  || «      �(| j                  ||j                  |j
                  ¬«       t        ‰| �  ||«       y ©N)ÚfieldsÚexpressions)r   r   Ú
create_sqlÚ_create_missing_fk_indexrH   rI   r9   Úremove_constraint)r   rE   Ú
constraintr;   s      €r   rL   z&DatabaseSchemaEditor.remove_constraintt   sZ   ø€ ä�zÔ#3Ô4Ø×%Ñ% e¨TÓ2Ð>à×)Ñ)ØØ!×(Ñ(Ø&×2Ñ2ð *ô ô
 	‰Ñ! %¨Õ4r   c           	      ó¨   •— | j                  ||j                  D ��cg c]  \  }}|‘Œ	 c}}|j                  ¬«       t        ‰| �  ||«       y c c}}w rG   )rK   Úfields_ordersrI   r9   Úremove_index)r   rE   ÚindexÚ
field_nameÚ_r;   s        €r   rP   z!DatabaseSchemaEditor.remove_index€   sQ   ø€ Ø×%Ñ%ØØ49×4GÑ4G×H¡= :¨q’JÓHØ×)Ñ)ð 	&ô 	
ô
 	‰Ñ˜U EÕ*ùó Is   �Ac                 ó8  •— t         ‰| �  ||«      sy| j                  j                  j	                  | j                  j                  «       |j                  j                  «      }|dk(  r |j                  «       dk(  r|j                  ry| j                  |«       S )NFÚInnoDBÚ
ForeignKey)r9   Ú_field_should_be_indexedr   ÚintrospectionÚget_storage_engineÚcursorrC   rD   Úget_internal_typeÚdb_constraintr$   )r   rE   r#   Ústorager;   s       €r   rW   z-DatabaseSchemaEditor._field_should_be_indexedˆ   s†   ø€ Ü‰wÑ/°°uÔ=Øà—/‘/×/Ñ/×BÑBØ�O‰O×"Ñ"Ó$ e§k¡k×&:Ñ&:ó
ˆð �xÒØ×'Ñ'Ó)¨\Ò9Ø×#Ò#àØ×-Ñ-¨eÓ4Ð4Ð4r   )rI   c                ó0  — d}|r|d   }nY|rW| j                   j                  j                  r7t        |d   t        «      r$t
        |d   j                  vr|d   j                  }|sy|j                  j                  |«      }|j                  «       dk(  rð| j                   j                  j                  |j                  «      }| j                   j                  «       5 }| j                   j                  j                  ||j                  j                  «      j!                  «       D ��	cg c]  \  }}	|	d   r|	d   d   |k(  r|‘Œ }
}}	ddd«       t#        
«      dk(  r%| j%                  | j'                  ||gd¬«      «       yyyc c}	}w # 1 sw Y   ŒDxY w)	aŠ  
        MySQL can remove an implicit FK index on a field when that field is
        covered by another index like a unique_together. "covered" here means
        that the more complex index has the FK field as its first field (see
        https://bugs.mysql.com/bug.php?id=37910).

        Manually create an implicit FK index to make it possible to remove the
        composed index.
        Nr   rV   rQ   Úcolumnsé   r,   )rH   Úsuffix)r   ÚfeaturesÚsupports_expression_indexesr   r   r   ÚnamerC   Ú	get_fieldr[   rX   Úidentifier_converterr>   rZ   Úget_constraintsrD   ÚitemsÚlenrA   Ú_create_index_sql)r   rE   rH   rI   Úfirst_field_nameÚfirst_fieldr>   rZ   rd   ÚinfodictÚconstraint_namess              r   rK   z-DatabaseSchemaEditor._create_missing_fk_indexš   s�  € ð   ÐÙØ% a™yÑáØ—‘×(Ñ(×DÒDÜ˜; q™>¬1Ô-Ü +¨a¡.×"5Ñ"5Ñ5à*¨1™~×2Ñ2ÐáØà—k‘k×+Ñ+Ð,<Ó=ˆØ×(Ñ(Ó*¨lÒ:Ø—_‘_×2Ñ2×GÑGØ×"Ñ"óˆFð —‘×'Ñ'Ó)ð ¨Vð +/¯/©/×*GÑ*G×*WÑ*WØ §¡× 4Ñ 4ó+ç‘e“g÷	$á&˜˜hð   Ò(¨X°iÑ-@ÀÑ-CÀvÒ-Mò	 ð$Ð ñ $÷ô Ð#Ó$¨Ò)Ø—‘Ø×*Ñ*¨5¸+¸ÈrÐ*ÓRõð *ð ;ùó
$÷ð ús   ÃAFÄ*FÅFÆFÆFc                 óL   •— | j                  ||¬«       t        ‰| �  ||g|¢­Ž S )N)rH   )rK   r9   Ú_delete_composed_index)r   rE   rH   Úargsr;   s       €r   rp   z+DatabaseSchemaEditor._delete_composed_indexÌ   s-   ø€ Ø×%Ñ% e°FÐ%Ô;Ü‰wÑ-¨e°VÐC¸dÒCÐCr   c                 ó¾   ‡ — |j                  «       r3‰ j                  |«      \  }}|t        ˆ fd„|D «       «      z  }|d|› �z  }|j                  r|dz  }|S |dz  }|S )z‚
        Keep the NULL and DEFAULT properties of the old field. If it has
        changed, it will be handled separately.
        c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr   )r   )Ú.0Úpr   s     €r   ú	<genexpr>z;DatabaseSchemaEditor._set_field_new_type.<locals>.<genexpr>×   s   øè ø€ Ò E¸ ×!1Ñ!1°!×!4Ñ Eùs   ƒz	 DEFAULT z NULLz	 NOT NULL)Úhas_db_defaultÚdb_default_sqlÚtupleÚnull)r   r#   Únew_typeÚdefault_sqlÚparamss   `    r   Ú_set_field_new_typez(DatabaseSchemaEditor._set_field_new_typeÐ   su   ø€ ð
 ×ÑÔ!Ø"&×"5Ñ"5°eÓ"<ÑˆK˜Øœ5Ó E¸fÔ EÓEÑEˆKØ˜) K =Ð1Ñ1ˆHØ�:Š:Ø˜ÑˆHð ˆð ˜Ñ#ˆHØˆr   c                 óP   •— | j                  ||«      }t        ‰| �	  ||||||«      S r   )r~   r9   Ú_alter_column_type_sql)r   rE   Ú	old_fieldÚ	new_fieldr{   Úold_collationÚnew_collationr;   s          €r   r€   z+DatabaseSchemaEditor._alter_column_type_sqlß   s6   ø€ ð ×+Ñ+¨I°xÓ@ˆÜ‰wÑ-Ø�9˜i¨°=À-ó
ð 	
r   c                 óZ   •— | j                   j                  rt        ‰| �  ||«      S |d   S )NÚcheck)r   r   r9   Ú_field_db_check)r   r#   Úfield_db_paramsr;   s      €r   r‡   z$DatabaseSchemaEditor._field_db_checkç   s/   ø€ Ø�?‰?×+Ò+Ü‘7Ñ*¨5°/ÓBÐBð ˜wÑ'Ð'r   c                 óL   •— | j                  ||«      }t        ‰| �	  ||||«      S r   )r~   r9   Ú_rename_field_sql)r   r=   r�   r‚   r{   r;   s        €r   rŠ   z&DatabaseSchemaEditor._rename_field_sqlî   s+   ø€ Ø×+Ñ+¨I°xÓ@ˆÜ‰wÑ(¨°	¸9ÀhÓOÐOr   c                 ó
   — dg fS )Nr,   © )r   rE   r‚   r{   Únew_db_comments        r   Ú_alter_column_comment_sqlz.DatabaseSchemaEditor._alter_column_comment_sqlò   s   € à�2ˆvˆr   c                 ó,   •— t         ‰| �  |«      }d|› �S )Nz	 COMMENT )r9   Ú_comment_sql)r   ÚcommentÚcomment_sqlr;   s      €r   r�   z!DatabaseSchemaEditor._comment_sqlö   s   ø€ Ü‘gÑ*¨7Ó3ˆØ˜;˜-Ð(Ð(r   c                 óî   •— |j                  «       st        ‰| �	  |||«      S |j                  | j                  ¬«      }| j                  ||d   «      }d| j                  |j                  «      |dœz  g fS )N)r   ÚtypezMODIFY %(column)s %(type)s)r>   r”   )rw   r9   Ú_alter_column_null_sqlÚdb_parametersr   r~   rB   r>   )r   rE   r�   r‚   Únew_db_paramsÚtype_sqlr;   s         €r   r•   z+DatabaseSchemaEditor._alter_column_null_sqlú   s‚   ø€ Ø×'Ñ'Ô)Ü‘7Ñ1°%¸ÀIÓNÐNà!×/Ñ/¸4¿?¹?Ð/ÓKˆØ×+Ñ+¨I°}ÀVÑ7LÓMˆà(àŸ/™/¨)×*:Ñ*:Ó;Ø ññð
 ð
ð 	
r   ))Ú__name__Ú
__module__Ú__qualname__Úsql_rename_tableÚsql_alter_column_nullÚsql_alter_column_not_nullÚsql_alter_column_typeÚ sql_alter_column_no_default_nullÚsql_delete_uniqueÚsql_create_column_inline_fkÚsql_delete_fkÚsql_delete_indexÚsql_rename_indexÚsql_create_pkÚsql_delete_pkÚsql_create_indexÚsql_alter_table_commentÚsql_alter_column_commentÚpropertyr   r   r$   r)   r1   r3   r.   r:   r?   rL   rP   rW   rK   rp   r~   r€   r‡   rŠ   rŽ   r�   r•   Ú__classcell__)r;   s   @r   r	   r	      sü   ø„ ØDÐà=ÐØ EÐØPÐØ'QÐ$àCÐð	1ð  ð F€Mà9ÐØXÐð 	Rð ð =€MàRÐàKÐØ#Ðàñ;ó ð;òò
òFòòð ñ;ó ð;ô	2ôô 
5ô+ô5ð. ô0ôdDòô
ô(ôPòô)÷
ð 
r   r	   N)	Údjango.db.backends.base.schemar   Údjango.db.modelsr   r   r   Údjango.db.models.constantsr   r	   rŒ   r   r   ú<module>r°      s    ðÝ Cß >Ñ >Ý 1ôA
Ð3õ A
r   