Ë
    ¦2Úi¶%  ã                   ó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dZed„ «       Zeˆ f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$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 COLUMN %(column)sz)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    úV/var/www/html/acx/venv/lib/python3.12/site-packages/django/db/backends/mysql/schema.pyÚsql_delete_checkz%DatabaseSchemaEditor.sql_delete_check%   s   € à�?‰?×+Ò+ð NØ:ó    c                 óÀ   •— | j                   j                  r$| j                   j                  dk\  r
t        ‰| �  S y| j                   j                  dk\  r
t        ‰| �  S y)N)é
   é   é   )é   r   é   zCALTER TABLE %(table)s CHANGE %(old_column)s %(new_column)s %(type)s)r   r   Úmysql_versionÚsuperÚsql_rename_column)r   Ú	__class__s    €r   r   z&DatabaseSchemaEditor.sql_rename_column.   sW   ø€ ð �?‰?×+Ò+Ø�‰×,Ñ,°
Ò:Ü‘wÑ0Ð0ð Uð �_‰_×*Ñ*¨iÒ7Ü‘7Ñ,Ð,ØTr   c                 óf  — | j                   j                  «        t        |t        «      r|j	                  dd«      }| j                   j                   j                  || j                   j                   j                  «      }t        |t        «      r t        |t        «      r|j                  «       }|S )Nú%z%%)	r   Úensure_connectionÚ
isinstanceÚstrÚreplaceÚescapeÚencodersÚbytesÚdecode)r   ÚvalueÚquoteds      r   Úquote_valuez DatabaseSchemaEditor.quote_value9   s€   € Ø�‰×)Ñ)Ô+Ü�eœSÔ!Ø—M‘M # tÓ,ˆEà—‘×+Ñ+×2Ñ2Ø�4—?‘?×-Ñ-×6Ñ6ó
ˆô �eœSÔ!¤j°¼Ô&?Ø—]‘]“_ˆFØˆr   c                 ó�   — |j                  | j                  «      }|d uxr& |j                  «       | j                  j                  v S ©N)Údb_typer   ÚlowerÚ_limited_data_types)r   Úfieldr+   s      r   Ú_is_limited_data_typez*DatabaseSchemaEditor._is_limited_data_typeE   s?   € Ø—-‘- §¡Ó0ˆà˜4Ðò GØ—‘“ 4§?¡?×#FÑ#FÐFð	
r   c                 ó>   — | j                   s| j                  |«      S y)NF)Ú$_supports_limited_data_type_defaultsr/   ©r   r.   s     r   Úskip_defaultz!DatabaseSchemaEditor.skip_defaultL   s   € Ø×8Ò8Ø×-Ñ-¨eÓ4Ð4Ør   c                 óT   — | j                  |«      r| j                  j                  syy)NTF)r/   r   r   r2   s     r   Úskip_default_on_alterz*DatabaseSchemaEditor.skip_default_on_alterQ   s$   € Ø×%Ñ% eÔ,°T·_±_×5UÒ5Uð Ør   c                 ób   — | j                   j                  ry| j                   j                  dk\  S )NT)r   r   é   )r   r   r   r   s    r   r1   z9DatabaseSchemaEditor._supports_limited_data_type_defaultsX   s)   € ð �?‰?×+Ò+ØØ�‰×,Ñ,°
Ñ:Ð:r   c                 óŠ   •— | j                   j                  s| j                  r| j                  |«      ryt        ‰| �  |«      S )Nz(%s))r   r   r1   r/   r   Ú_column_default_sql)r   r.   r   s     €r   r9   z(DatabaseSchemaEditor._column_default_sql_   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)r   Ú	add_fieldr3   Údefaultr   Úeffective_defaultÚexecuteÚ
quote_nameÚ_metaÚdb_tabler<   )r   Úmodelr.   r?   r   s       €r   r=   zDatabaseSchemaEditor.add_fieldj   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_indexrG   rH   r   Úremove_constraint)r   rD   Ú
constraintr   s      €r   rK   z&DatabaseSchemaEditor.remove_constraintz   sZ   ø€ ä�zÔ#3Ô4Ø×%Ñ% e¨TÓ2Ð>à×)Ñ)ØØ!×(Ñ(Ø&×2Ñ2ð *ô ô
 	‰Ñ! %¨Õ4r   c           	      ó¨   •— | j                  ||j                  D ��cg c]  \  }}|‘Œ	 c}}|j                  ¬«       t        ‰| �  ||«       y c c}}w rF   )rJ   Úfields_ordersrH   r   Úremove_index)r   rD   ÚindexÚ
field_nameÚ_r   s        €r   rO   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)r   Ú_field_should_be_indexedr   ÚintrospectionÚget_storage_engineÚcursorrB   rC   Úget_internal_typeÚdb_constraintr/   )r   rD   r.   Ústorager   s       €r   rV   z-DatabaseSchemaEditor._field_should_be_indexedŽ   s†   ø€ Ü‰wÑ/°°uÔ=Øà—/‘/×/Ñ/×BÑBØ�O‰O×"Ñ"Ó$ e§k¡k×&:Ñ&:ó
ˆð �xÒØ×'Ñ'Ó)¨\Ò9Ø×#Ò#àØ×-Ñ-¨eÓ4Ð4Ð4r   )rH   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   rU   rP   Úcolumnsé   Ú )rG   Úsuffix)r   ÚfeaturesÚsupports_expression_indexesr   r   r   ÚnamerB   Ú	get_fieldrZ   rW   Úidentifier_converterr<   rY   Úget_constraintsrC   ÚitemsÚlenr@   Ú_create_index_sql)r   rD   rG   rH   Úfirst_field_nameÚfirst_fieldr<   rY   rd   ÚinfodictÚconstraint_namess              r   rJ   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)rG   )rJ   r   Ú_delete_composed_index)r   rD   rG   Úargsr   s       €r   rp   z+DatabaseSchemaEditor._delete_composed_indexÒ   s-   ø€ Ø×%Ñ% e°FÐ%Ô;Ü‰wÑ-¨e°VÐC¸dÒCÐCr   c                 ó6   — |j                   r|dz  }|S |dz  }|S )zt
        Keep the null property of the old field. If it has changed, it will be
        handled separately.
        z NULLz	 NOT NULL)Únull)r   r.   Únew_types      r   Ú_set_field_new_type_null_statusz4DatabaseSchemaEditor._set_field_new_type_null_statusÖ   s-   € ð
 �:Š:Ø˜ÑˆHð ˆð ˜Ñ#ˆHØˆr   c                 óP   •— | j                  ||«      }t        ‰| �	  ||||||«      S r*   )ru   r   Ú_alter_column_type_sql)r   rD   Ú	old_fieldÚ	new_fieldrt   Úold_collationÚnew_collationr   s          €r   rw   z+DatabaseSchemaEditor._alter_column_type_sqlá   s6   ø€ ð ×7Ñ7¸	À8ÓLˆÜ‰wÑ-Ø�9˜i¨°=À-ó
ð 	
r   c                 óL   •— | j                  ||«      }t        ‰| �	  ||||«      S r*   )ru   r   Ú_rename_field_sql)r   r;   rx   ry   rt   r   s        €r   r}   z&DatabaseSchemaEditor._rename_field_sqlé   s+   ø€ Ø×7Ñ7¸	À8ÓLˆÜ‰wÑ(¨°	¸9ÀhÓOÐOr   c                 ó
   — dg fS )Nr`   © )r   rD   ry   rt   Únew_db_comments        r   Ú_alter_column_comment_sqlz.DatabaseSchemaEditor._alter_column_comment_sqlí   s   € à�2ˆvˆr   c                 ó,   •— t         ‰| �  |«      }d|› �S )Nz	 COMMENT )r   Ú_comment_sql)r   ÚcommentÚcomment_sqlr   s      €r   rƒ   z!DatabaseSchemaEditor._comment_sqlñ   s   ø€ Ü‘gÑ*¨7Ó3ˆØ˜;˜-Ð(Ð(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_columnÚ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/   r3   r5   r1   r9   r=   rK   rO   rV   rJ   rp   ru   rw   r}   r�   rƒ   Ú__classcell__)r   s   @r   r	   r	      s  ø„ ØDÐà=ÐØ EÐØPÐØ'QÐ$ð GÐàCÐð	1ð  ð F€Mà9ÐØXÐð 	Rð ð =€MàRÐàKÐØ#Ðàñ;ó ð;ð óUó ðUò
ò
òò
ð ñ;ó ð;ô	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ôm)Ð3õ m)r   