§
    ¤”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                   ó8  ‡ — 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$ˆ 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    ún/var/www/finuniver-perm.ru/html/portfolio/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         s|                      |¦  «        S dS )NF)Ú$_supports_limited_data_type_defaultsr-   ©r   r,   s     r   Úskip_defaultz!DatabaseSchemaEditor.skip_defaultH   s&   € ØÔ8ð 	5Ø×-Ò-¨eÑ4Ô4Ð4Øˆur   c                 óL   — |                       |¦  «        r| j        j        sdS dS )NTF)r-   r   r   r0   s     r   Úskip_default_on_alterz*DatabaseSchemaEditor.skip_default_on_alterM   s0   € Ø×%Ò% eÑ,Ô,ð 	°T´_Ô5Uð 	ð �4Øˆur   c                 ó>   — | j         j        rdS | j         j        dk    S )NT)é   r   é   )r   r   r   r   s    r   r/   z9DatabaseSchemaEditor._supports_limited_data_type_defaultsT   s&   € ð Œ?Ô+ð 	Ø�4ØŒÔ,°
Ò:Ð:r   c                 óš   •— | j         j        s| j        r|                      |¦  «        rdS t	          ¦   «                              |¦  «        S )Nz(%s))r   r   r/   r-   r   Ú_column_default_sql)r   r,   r   s     €r   r8   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_fieldr1   Údefaultr   Úeffective_defaultÚexecuteÚ
quote_nameÚ_metaÚdb_tabler;   )r   Úmodelr,   r>   r   s       €r   r<   zDatabaseSchemaEditor.add_fieldf   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_indexrF   rG   r   Úremove_constraint)r   rC   Ú
constraintr   s      €r   rJ   z&DatabaseSchemaEditor.remove_constraintv   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 © rN   )Ú.0Ú
field_nameÚ_s      r   ú
<listcomp>z5DatabaseSchemaEditor.remove_index.<locals>.<listcomp>…   s   € ÐHÐHÐH¡= :¨q�JÐHÐHÐHr   rE   )rI   Úfields_ordersrG   r   Úremove_index)r   rC   Úindexr   s      €r   rT   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ÚcursorrA   rB   Úget_internal_typeÚdb_constraintr-   )r   rC   r,   Ústorager   s       €r   rY   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   )rG   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   rX   c                 óN   •— g | ]!\  }}|d          r|d         d         ‰k    ¯|‘Œ"S )rU   Úcolumnsr   rN   )rO   ÚnameÚinfodictr;   s      €r   rR   zADatabaseSchemaEditor._create_missing_fk_index.<locals>.<listcomp>À   sP   ø€ ð $ð $ð $á&˜˜hð   Ô(ð$ð
 .6°iÔ-@ÀÔ-CÀvÒ-MÐ-Mð	 ð .NÐ-MÐ-Mr   é   Ú )rF   Úsuffix)r   ÚfeaturesÚsupports_expression_indexesr!   r   r   rc   rA   Ú	get_fieldr]   rZ   Úidentifier_converterr;   r\   Úget_constraintsrB   ÚitemsÚlenr?   Ú_create_index_sql)	r   rC   rF   rG   Úfirst_field_nameÚfirst_fieldr\   Úconstraint_namesr;   s	           @r   rI   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)rF   )rI   r   Ú_delete_composed_index)r   rC   rF   Úargsr   s       €r   rt   z+DatabaseSchemaEditor._delete_composed_indexÎ   s=   ø€ Ø×%Ò% e°FÐ%Ñ;Ô;Ð;Ø-�u‰wŒwÔ-¨e°VÐC¸dÐCÐCÐCÐCr   c                 óÄ   ‡ — |j         t          u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'   )rO   Ú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)Ú
db_defaultr   Údb_default_sqlÚtupleÚnull)r   r,   Únew_typeÚdefault_sqlÚparamss   `    r   Ú_set_field_new_typez(DatabaseSchemaEditor._set_field_new_typeÒ   sŠ   ø€ ð
 Ô¥<Ð/Ð/Ø"&×"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   rC   Ú	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   r:   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 )Nrf   rN   )r   rC   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                 ó  •— |j         t          u r#t          ¦   «                              |||¦  «        S |                     | j        ¬¦  «        }|                      ||d         ¦  «        }d|                      |j        ¦  «        |dœz  g fS )N)r   ÚtypezMODIFY %(column)s %(type)s)r;   r–   )	rz   r   r   Ú_alter_column_null_sqlÚdb_parametersr   r�   r@   r;   )r   rC   r„   r…   Únew_db_paramsÚtype_sqlr   s         €r   r—   z+DatabaseSchemaEditor._alter_column_null_sql  s•   ø€ ØÔ¥<Ð/Ð/Ý‘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-   r1   r3   r/   r8   r<   rJ   rT   rY   rI   rt   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ð)ðð ð ð
ð 
ð 
ðð ð ð
ð ð ð ð;ð ;ñ „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	   rN   r   r   ú<module>r³      s†   ðØ CÐ CÐ CÐ CÐ CÐ CØ >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ðI
ð I
ð I
ð I
ð I
Ð3ñ I
ô I
ð I
ð I
ð I
r   