§
    Ÿjç+  ã                   ó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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 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    úl/var/www/finuniver-perm.ru/html/student/venv/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         j        }|r| j         j        dk     rdS t          ¦   «         j        S )N©é
   é   é   zCALTER TABLE %(table)s CHANGE %(old_column)s %(new_column)s %(type)s)r   r   Úmysql_versionÚsuperÚsql_rename_column)r   Ú
is_mariadbÚ	__class__s     €r   r   z&DatabaseSchemaEditor.sql_rename_column.   s;   ø€ à”_Ô5ˆ
Øð 	Y˜$œ/Ô7¸*ÒDÐDð YÐXÝ‰wŒwÔ(Ð(r   c                 ó  — | j                              ¦   «          | j         j                              || j         j         j        ¦  «        }t	          |t
          ¦  «        r)t	          |t          ¦  «        r|                     ¦   «         }|S ©N)r   Úensure_connectionÚescapeÚencodersÚ
isinstanceÚstrÚbytesÚdecode)r   ÚvalueÚquoteds      r   Úquote_valuez DatabaseSchemaEditor.quote_value7   st   € ØŒ×)Ò)Ñ+Ô+Ð+à”Ô+×2Ò2Ø�4”?Ô-Ô6ñ
ô 
ˆõ �e�SÑ!Ô!ð 	%¥j°½Ñ&?Ô&?ð 	%Ø—]’]‘_”_ˆFØˆr   c                 ó~   — |                      | j        ¦  «        }|d uo|                     ¦   «         | j        j        v S r   )Údb_typer   ÚlowerÚ_limited_data_types©r   Úfieldr)   s      r   Ú_is_limited_data_typez*DatabaseSchemaEditor._is_limited_data_typeA   s=   € Ø—-’- ¤Ñ0Ô0ˆà˜4Ðð GØ—’‘” 4¤?Ô#FÐFð	
r   c                 óˆ   — |                      | j        ¦  «        }|o&|                     ¦   «                              d¦  «        S )N)ÚblobÚtext)r)   r   r*   Úendswithr,   s      r   Ú_is_text_or_blobz%DatabaseSchemaEditor._is_text_or_blobH   s7   € Ø—-’- ¤Ñ0Ô0ˆØÐE˜7Ÿ=š=™?œ?×3Ò3Ð4DÑEÔEÐEr   c                 óž   — |                       |¦  «        dv }|r|                      |¦  «        rdS | j        s|                      |¦  «        S dS ©N)Ú r   TF)Úeffective_defaultr3   Ú$_supports_limited_data_type_defaultsr.   ©r   r-   Údefault_is_emptys      r   Úskip_defaultz!DatabaseSchemaEditor.skip_defaultL   sa   € Ø×1Ò1°%Ñ8Ô8¸IÐEÐØð 	 × 5Ò 5°eÑ <Ô <ð 	Ø�4ØÔ8ð 	5Ø×-Ò-¨eÑ4Ô4Ð4Øˆur   c                 ó¬   — |                       |¦  «        dv }|r|                      |¦  «        rdS |                      |¦  «        r| j        j        sdS dS r5   )r7   r3   r.   r   r   r9   s      r   Úskip_default_on_alterz*DatabaseSchemaEditor.skip_default_on_alterT   sk   € Ø×1Ò1°%Ñ8Ô8¸IÐEÐØð 	 × 5Ò 5°eÑ <Ô <ð 	Ø�4Ø×%Ò% eÑ,Ô,ð 	°T´_Ô5Uð 	ð �4Øˆur   c                 ó>   — | j         j        rdS | j         j        dk    S )NT)é   r   é   )r   r   r   r   s    r   r8   z9DatabaseSchemaEditor._supports_limited_data_type_defaults^   s&   € ð Œ?Ô+ð 	Ø�4ØŒÔ,°
Ò:Ð:r   c                 óš   •— | j         j        s| j        r|                      |¦  «        rdS t	          ¦   «                              |¦  «        S )Nz(%s))r   r   r8   r.   r   Ú_column_default_sql)r   r-   r   s     €r   rB   z(DatabaseSchemaEditor._column_default_sqle   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_fieldr;   Údefaultr   r7   ÚexecuteÚ
quote_nameÚ_metaÚdb_tablerE   )r   Úmodelr-   r7   r   s       €r   rF   zDatabaseSchemaEditor.add_fieldp   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_indexrO   rP   r   Úremove_constraint)r   rL   Ú
constraintr   s      €r   rS   z&DatabaseSchemaEditor.remove_constraint€   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 © rW   )Ú.0Ú
field_nameÚ_s      r   ú
<listcomp>z5DatabaseSchemaEditor.remove_index.<locals>.<listcomp>�   s   € ÐHÐHÐH¡= :¨q�JÐHÐHÐHr   rN   )rR   Úfields_ordersrP   r   Úremove_index)r   rL   Úindexr   s      €r   r]   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ÚcursorrJ   rK   Úget_internal_typeÚdb_constraintr.   )r   rL   r-   Ústorager   s       €r   rb   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   )rP   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   ra   c                 óN   •— g | ]!\  }}|d          r|d         d         ‰k    ¯|‘Œ"S )r^   Úcolumnsr   rW   )rX   ÚnameÚinfodictrE   s      €r   r[   zADatabaseSchemaEditor._create_missing_fk_index.<locals>.<listcomp>Ê   sP   ø€ ð $ð $ð $á&˜˜hð   Ô(ð$ð
 .6°iÔ-@ÀÔ-CÀvÒ-MÐ-Mð	 ð .NÐ-MÐ-Mr   é   r6   )rO   Úsuffix)r   ÚfeaturesÚsupports_expression_indexesr!   r   r   rl   rJ   Ú	get_fieldrf   rc   Úidentifier_converterrE   re   Úget_constraintsrK   ÚitemsÚlenrH   Ú_create_index_sql)	r   rL   rO   rP   Úfirst_field_nameÚfirst_fieldre   Úconstraint_namesrE   s	           @r   rR   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)rO   )rR   r   Ú_delete_composed_index)r   rL   rO   Úargsr   s       €r   r|   z+DatabaseSchemaEditor._delete_composed_indexØ   s=   ø€ Ø×%Ò% e°FÐ%Ñ;Ô;Ð;Ø-�u‰wŒwÔ-¨e°VÐC¸dÐCÐCÐCÐCr   c                 óÐ   ‡ — |                      ¦   «         r>‰                      |¦  «        \  }}|t          ˆ fd„|D ¦   «         ¦  «        z  }|d|› �z  }|j        r|dz  }n|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   óB   •K  — | ]}‰                      |¦  «        V — Œd S r   )r'   )rX   Úpr   s     €r   ú	<genexpr>z;DatabaseSchemaEditor._set_field_new_type.<locals>.<genexpr>ã   s1   øè è € Ð EÐ E¸ ×!1Ò!1°!Ñ!4Ô!4Ð EÐ EÐ EÐ EÐ EÐ Er   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Ü   s�   ø€ ð
 ×ÒÑ!Ô!ð 	2Ø"&×"5Ò"5°eÑ"<Ô"<ÑˆK˜Ø�5Ð EÐ EÐ EÐ E¸fÐ EÑ EÔ EÑEÔEÑEˆKØÐ1 KÐ1Ð1Ñ1ˆHØŒ:ð 	$Ø˜ÑˆHˆHà˜Ñ#ˆHØˆr   c                 ó|   •— |                       ||¦  «        }t          ¦   «                              ||||||¦  «        S r   )r‰   r   Ú_alter_column_type_sql)r   rL   Ú	old_fieldÚ	new_fieldr†   Úold_collationÚnew_collationr   s          €r   r‹   z+DatabaseSchemaEditor._alter_column_type_sqlë   sC   ø€ ð ×+Ò+¨I°xÑ@Ô@ˆÝ‰wŒw×-Ò-Ø�9˜i¨°=À-ñ
ô 
ð 	
r   c                 ó�   •— | j         j        r2| j         j        dk    r"t          ¦   «                              ||¦  «        S |d         S )Nr   Úcheck)r   r   r   r   Ú_field_db_check)r   r-   Úfield_db_paramsr   s      €r   r’   z$DatabaseSchemaEditor._field_db_checkó   sQ   ø€ ØŒ?Ô+ð 	C°´Ô0Mð R
ò 1
ð 1
õ
 ‘7”7×*Ò*¨5°/ÑBÔBÐBð
 ˜wÔ'Ð'r   c                 óx   •— |                       ||¦  «        }t          ¦   «                              ||||¦  «        S r   )r‰   r   Ú_rename_field_sql)r   rD   rŒ   r�   r†   r   s        €r   r•   z&DatabaseSchemaEditor._rename_field_sql   s6   ø€ Ø×+Ò+¨I°xÑ@Ô@ˆÝ‰wŒw×(Ò(¨°	¸9ÀhÑOÔOÐOr   c                 ó
   — dg fS )Nr6   rW   )r   rL   r�   r†   Ú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   c                 ó$  •— |                      ¦   «         s#t          ¦   «                              |||¦  «        S |                     | j        ¬¦  «        }|                      ||d         ¦  «        }d|                      |j        ¦  «        |dœz  g fS )N)r   ÚtypezMODIFY %(column)s %(type)s)rE   rž   )r‚   r   Ú_alter_column_null_sqlÚdb_parametersr   r‰   rI   rE   )r   rL   rŒ   r�   Únew_db_paramsÚtype_sqlr   s         €r   rŸ   z+DatabaseSchemaEditor._alter_column_null_sql  sœ   ø€ Ø×'Ò'Ñ)Ô)ð 	OÝ‘7”7×1Ò1°%¸ÀIÑNÔNÐNà!×/Ò/¸4¼?Ð/ÑKÔKˆØ×+Ò+¨I°}ÀVÔ7LÑMÔ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_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   r;   r=   r8   rB   rF   rS   r]   rb   rR   r|   r‰   r‹   r’   r•   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ÐØ#Ðàð;ð ;ñ „Xð;ð ð)ð )ð )ð )ñ „Xð)ðð ð ð
ð 
ð 
ðFð Fð Fðð ð ðð ð ð ð;ð ;ñ „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	   rW   r   r   ú<module>r»      s†   ðØ CÐ CÐ CÐ CÐ CÐ CØ >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ðS
ð S
ð S
ð S
ð S
Ð3ñ S
ô S
ð S
ð S
ð S
r   