§
    Ï“Ùh¶%  ã                   óN   — d dl mZ d dlmZmZmZ d dlmZ  G d„ de¦  «        ZdS )é    )Ú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                 ó"   — | j         j        rdS dS )Nz8ALTER TABLE %(table)s DROP CONSTRAINT IF EXISTS %(name)sz)ALTER TABLE %(table)s DROP CHECK %(name)s)Ú
connectionÚmysql_is_mariadb©Úselfs    ú^/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/django/db/backends/mysql/schema.pyÚsql_delete_checkz%DatabaseSchemaEditor.sql_delete_check%   s   € àŒ?Ô+ð 	Nð NÐMØ:Ð:ó    c                 ó®   •— | j         j        r$| j         j        dk    rt          ¦   «         j        S n#| j         j        dk    rt          ¦   «         j        S dS )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”wÔ0Ð0ð ;àŒ_Ô*¨iÒ7Ð7Ý‘7”7Ô,Ð,ØTÐTr   c                 óh  — | j                              ¦   «          t          |t          ¦  «        r|                     dd¦  «        }| j         j                              || j         j         j        ¦  «        }t          |t          ¦  «        r)t          |t          ¦  «        r|                     ¦   «         }|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ñ
ô 
ˆõ �e�SÑ!Ô!ð 	%¥j°½Ñ&?Ô&?ð 	%Ø—]’]‘_”_ˆFØˆr   c                 ó~   — |                      | j        ¦  «        }|d uo|                     ¦   «         | 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Ô0ˆà˜4Ðð GØ—’‘” 4¤?Ô#FÐFð	
r   c                 ó>   — | j         s|                      |¦  «        S dS )NF)Ú$_supports_limited_data_type_defaultsr/   ©r   r.   s     r   Úskip_defaultz!DatabaseSchemaEditor.skip_defaultL   s&   € ØÔ8ð 	5Ø×-Ò-¨eÑ4Ô4Ð4Øˆur   c                 óL   — |                       |¦  «        r| j        j        sdS dS )NTF)r/   r   r   r2   s     r   Úskip_default_on_alterz*DatabaseSchemaEditor.skip_default_on_alterQ   s0   € Ø×%Ò% eÑ,Ô,ð 	°T´_Ô5Uð 	ð �4Øˆur   c                 ó>   — | j         j        rdS | j         j        dk    S )NT)r   r   é   )r   r   r   r   s    r   r1   z9DatabaseSchemaEditor._supports_limited_data_type_defaultsX   s&   € ð Œ?Ô+ð 	Ø�4ØŒÔ,°
Ò:Ð:r   c                 óš   •— | j         j        s| j        r|                      |¦  «        rdS t	          ¦   «                              |¦  «        S )Nz(%s))r   r   r1   r/   r   Ú_column_default_sql)r   r.   r   s     €r   r9   z(DatabaseSchemaEditor._column_default_sql_   sR   ø€ à”Ô0ð	àÔ9ð	ð ×*Ò*¨5Ñ1Ô1ð	ð �6Ý‰wŒw×*Ò*¨5Ñ1Ô1Ð1r   c                 ól  •— t          ¦   «                              ||¦  «         |                      |¦  «        ry|j        d t          fvrk|                      |¦  «        }|                      d|                      |j        j	        ¦  «        |                      |j
        ¦  «        dœz  |g¦  «         d S d S d S )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Ð(QØ $× 6Ò 6°uÑ =Ô =ÐØ�LŠLØ7à!Ÿ_š_¨U¬[Ô-AÑBÔBØ"Ÿošo¨e¬lÑ;Ô;ðð ñð
 #Ð#ñô ð ð ð ð		ð 		Ð(QÐ(Qr   c                 óæ   •— t          |t          ¦  «        r8|                     || ¦  «        �"|                      ||j        |j        ¬¦  «         t          ¦   «                              ||¦  «         d S )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Ô4ð	à×%Ò% e¨TÑ2Ô2Ð>à×)Ò)ØØ!Ô(Ø&Ô2ð *ñ ô ð õ
 	‰Œ×!Ò! %¨Ñ4Ô4Ð4Ð4Ð4r   c                 ó¤   •— |                       |d„ |j        D ¦   «         |j        ¬¦  «         t          ¦   «                              ||¦  «         d S )Nc                 ó   — g | ]\  }}|‘ŒS © rO   )Ú.0Ú
field_nameÚ_s      r   ú
<listcomp>z5DatabaseSchemaEditor.remove_index.<locals>.<listcomp>‰   s   € ÐHÐHÐH¡= :¨q�JÐHÐHÐHr   rF   )rJ   Úfields_ordersrH   r   Úremove_index)r   rD   Úindexr   s      €r   rU   z!DatabaseSchemaEditor.remove_index†   s_   ø€ Ø×%Ò%ØØHÐH°EÔ4GÐHÑHÔHØÔ)ð 	&ñ 	
ô 	
ð 	
õ
 	‰Œ×Ò˜U EÑ*Ô*Ð*Ð*Ð*r   c                 óH  •— t          ¦   «                              ||¦  «        sdS | j        j                             | j                             ¦   «         |j        j        ¦  «        }|dk    r!|                     ¦   «         dk    r	|j	        rdS |  
                    |¦  «         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   rZ   z-DatabaseSchemaEditor._field_should_be_indexedŽ   s£   ø€ Ý‰wŒw×/Ò/°°uÑ=Ô=ð 	Ø�5à”/Ô/×BÒBØŒO×"Ò"Ñ$Ô$ e¤kÔ&:ñ
ô 
ˆð �xÒÐØ×'Ò'Ñ)Ô)¨\Ò9Ð9ØÔ#ð :ð �5Ø×-Ò-¨eÑ4Ô4Ð4Ð4r   )rH   c                óì  ‡— d}|r	|d         }nO|rM| j         j        j        r<t          |d         t          ¦  «        r!t
          |d         j        vr|d         j        }|sdS |j                             |¦  «        }| 	                    ¦   «         dk    rÞ| j         j
                             |j        ¦  «        Š| j                              ¦   «         5 }ˆfd„| j         j
                             ||j        j        ¦  «                             ¦   «         D ¦   «         }ddd¦  «         n# 1 swxY w Y   t#          |¦  «        dk    r0|                      |                      ||gd¬¦  «        ¦  «         dS dS dS )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   rY   c                 óN   •— g | ]!\  }}|d          r|d         d         ‰k    ¯|‘Œ"S )rV   Úcolumnsr   rO   )rP   ÚnameÚinfodictr<   s      €r   rS   zADatabaseSchemaEditor._create_missing_fk_index.<locals>.<listcomp>Ä   sP   ø€ ð $ð $ð $á&˜˜hð   Ô(ð$ð
 .6°iÔ-@ÀÔ-CÀvÒ-MÐ-Mð	 ð .NÐ-MÐ-Mr   é   Ú )rG   Úsuffix)r   ÚfeaturesÚsupports_expression_indexesr   r   r   rd   rB   Ú	get_fieldr^   r[   Úidentifier_converterr<   r]   Úget_constraintsrC   ÚitemsÚlenr@   Ú_create_index_sql)	r   rD   rG   rH   Úfirst_field_nameÚfirst_fieldr]   Úconstraint_namesr<   s	           @r   rJ   z-DatabaseSchemaEditor._create_missing_fk_index    sä  ø€ ð   ÐØð 	3Ø% aœyÐÐàð	3à”Ô(ÔDð	3õ ˜; qœ>­1Ñ-Ô-ð	3õ  +¨a¤.Ô"5Ð5Ð5à*¨1œ~Ô2Ðàð 	ØˆFà”k×+Ò+Ð,<Ñ=Ô=ˆØ×(Ò(Ñ*Ô*¨lÒ:Ð:Ø”_Ô2×GÒGØÔ"ñô ˆFð ”×'Ò'Ñ)Ô)ð ¨Vð$ð $ð $ð $à*.¬/Ô*G×*WÒ*WØ ¤Ô 4ñ+ô +ç’e‘g”gð	$ñ $ô $Ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ Ð#Ñ$Ô$¨Ò)Ð)Ø—’Ø×*Ò*¨5¸+¸ÈrÐ*ÑRÔRñô ð ð ð ð ;Ð:ð *Ð)s   ÃA	D&Ä&D*Ä-D*c                 óh   •— |                       ||¬¦  «          t          ¦   «         j        ||g|¢R Ž S )N)rG   )rJ   r   Ú_delete_composed_index)r   rD   rG   Úargsr   s       €r   ru   z+DatabaseSchemaEditor._delete_composed_indexÒ   s=   ø€ Ø×%Ò% e°FÐ%Ñ;Ô;Ð;Ø-�u‰wŒwÔ-¨e°VÐC¸dÐCÐCÐCÐCr   c                 ó*   — |j         r|dz  }n|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à˜Ñ#ˆHØˆr   c                 ó|   •— |                       ||¦  «        }t          ¦   «                              ||||||¦  «        S r*   )rz   r   Ú_alter_column_type_sql)r   rD   Ú	old_fieldÚ	new_fieldry   Úold_collationÚnew_collationr   s          €r   r|   z+DatabaseSchemaEditor._alter_column_type_sqlá   sC   ø€ ð ×7Ò7¸	À8ÑLÔLˆÝ‰wŒw×-Ò-Ø�9˜i¨°=À-ñ
ô 
ð 	
r   c                 óx   •— |                       ||¦  «        }t          ¦   «                              ||||¦  «        S r*   )rz   r   Ú_rename_field_sql)r   r;   r}   r~   ry   r   s        €r   r‚   z&DatabaseSchemaEditor._rename_field_sqlé   s6   ø€ Ø×7Ò7¸	À8ÑLÔLˆÝ‰wŒw×(Ò(¨°	¸9ÀhÑOÔOÐOr   c                 ó
   — dg fS )Nrg   rO   )r   rD   r~   ry   Únew_db_comments        r   Ú_alter_column_comment_sqlz.DatabaseSchemaEditor._alter_column_comment_sqlí   s   € à�2ˆvˆr   c                 óP   •— t          ¦   «                              |¦  «        }d|› �S )Nz	 COMMENT )r   Ú_comment_sql)r   ÚcommentÚcomment_sqlr   s      €r   r‡   z!DatabaseSchemaEditor._comment_sqlñ   s(   ø€ Ý‘g”g×*Ò*¨7Ñ3Ô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   rU   rZ   rJ   ru   rz   r|   r‚   r…   r‡   Ú__classcell__)r   s   @r   r	   r	      sP  ø€ € € € € ØDÐà=ÐØ EÐØPÐØ'QÐ$ð GÐàCÐð	1ð  ð F€Mà9ÐØXÐð 	Rð ð =€MàRÐàKÐØ#Ðàð;ð ;ñ „Xð;ð ðUð Uð Uð Uñ „XðUð
ð 
ð 
ð
ð 
ð 
ðð ð ð
ð ð ð ð;ð ;ñ „Xð;ð	2ð 	2ð 	2ð 	2ð 	2ðð ð ð ð ð 
5ð 
5ð 
5ð 
5ð 
5ð+ð +ð +ð +ð +ð5ð 5ð 5ð 5ð 5ð. ð0ð 0ð 0ð 0ð 0ðdDð Dð Dð Dð Dð	ð 	ð 	ð
ð 
ð 
ð 
ð 
ðPð Pð Pð Pð Pðð ð ð)ð )ð )ð )ð )ð )ð )ð )ð )r   r	   N)	Údjango.db.backends.base.schemar   Údjango.db.modelsr   r   r   Údjango.db.models.constantsr   r	   rO   r   r   ú<module>r¢      s†   ðØ CÐ CÐ CÐ CÐ CÐ CØ >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ðm)ð m)ð m)ð m)ð m)Ð3ñ m)ô m)ð m)ð m)ð m)r   