Ë
    ¹ûàgû+  ã                   ó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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                 ó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    ú]/var/www/skyplay_api_hub/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yt        ‰| �  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.   s7   ø€ à—_‘_×5Ñ5ˆ
Ù˜$Ÿ/™/×7Ñ7¸*ÒDð YÜ‰wÑ(Ð(r   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_value7   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_typeA   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_blobH   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_defaultr3   Ú$_supports_limited_data_type_defaultsr.   ©r   r-   Údefault_is_emptys      r   Úskip_defaultz!DatabaseSchemaEditor.skip_defaultL   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r5   )r7   r3   r.   r   r   r9   s      r   Úskip_default_on_alterz*DatabaseSchemaEditor.skip_default_on_alterT   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   r   r   s    r   r8   z9DatabaseSchemaEditor._supports_limited_data_type_defaults^   s)   € ð �?‰?×+Ò+ØØ�‰×,Ñ,°
Ñ:Ð:r   c                 óŠ   •— | j                   j                  s| j                  r| j                  |«      ryt        ‰| �  |«      S )Nz(%s))r   r   r8   r.   r   Ú_column_default_sql)r   r-   r   s     €r   rB   z(DatabaseSchemaEditor._column_default_sqle   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_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Ø $× 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_indexrO   rP   r   Úremove_constraint)r   rL   Ú
constraintr   s      €r   rS   z&DatabaseSchemaEditor.remove_constraint€   sZ   ø€ ä�zÔ#3Ô4Ø×%Ñ% e¨TÓ2Ð>à×)Ñ)ØØ!×(Ñ(Ø&×2Ñ2ð *ô ô
 	‰Ñ! %¨Õ4r   c           	      ó¨   •— | j                  ||j                  D ��cg c]  \  }}|‘Œ	 c}}|j                  ¬«       t        ‰| �  ||«       y c c}}w rN   )rR   Úfields_ordersrP   r   Úremove_index)r   rL   ÚindexÚ
field_nameÚ_r   s        €r   rW   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ÚcursorrJ   rK   Úget_internal_typeÚdb_constraintr.   )r   rL   r-   Ústorager   s       €r   r^   z-DatabaseSchemaEditor._field_should_be_indexed”   s†   ø€ Ü‰wÑ/°°uÔ=Øà—/‘/×/Ñ/×BÑBØ�O‰O×"Ñ"Ó$ e§k¡k×&:Ñ&:ó
ˆð �xÒØ×'Ñ'Ó)¨\Ò9Ø×#Ò#àØ×-Ñ-¨eÓ4Ð4Ð4r   )rP   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   r]   rX   Úcolumnsé   r6   )rO   Úsuffix)r   ÚfeaturesÚsupports_expression_indexesr!   r   r   ÚnamerJ   Ú	get_fieldrb   r_   Úidentifier_converterrE   ra   Úget_constraintsrK   ÚitemsÚlenrH   Ú_create_index_sql)r   rL   rO   rP   Úfirst_field_nameÚfirst_fieldrE   ra   rk   ÚinfodictÚconstraint_namess              r   rR   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)rO   )rR   r   Ú_delete_composed_index)r   rL   rO   Úargsr   s       €r   rw   z+DatabaseSchemaEditor._delete_composed_indexØ   s-   ø€ Ø×%Ñ% e°FÐ%Ô;Ü‰wÑ-¨e°VÐC¸dÒCÐCr   c                 óÂ   ‡ — |j                   t        u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)Ú
db_defaultr   Údb_default_sqlÚtupleÚnull)r   r-   Únew_typeÚdefault_sqlÚparamss   `    r   Ú_set_field_new_typez(DatabaseSchemaEditor._set_field_new_typeÜ   sw   ø€ ð
 ×Ñ¤<Ñ/Ø"&×"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…   r   Ú_alter_column_type_sql)r   rL   Ú	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                 óŒ   •— | j                   j                  r)| 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ó   sH   ø€ Ø�?‰?×+Ò+°·±×0MÑ0Mð R
ò 1
ô
 ‘7Ñ*¨5°/ÓBÐBð
 ˜wÑ'Ð'r   c                 óL   •— | j                  ||«      }t        ‰| �	  ||||«      S r   )r…   r   Ú_rename_field_sql)r   rD   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 )Nr6   © )r   rL   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 )r   Ú_comment_sql)r   ÚcommentÚcomment_sqlr   s      €r   r—   z!DatabaseSchemaEditor._comment_sql  s   ø€ Ü‘gÑ*¨7Ó3ˆØ˜;˜-Ð(Ð(r   c                 óò   •— |j                   t        u rt        ‰| �  |||«      S |j	                  | j
                  ¬«      }| j                  ||d   «      }d| j                  |j                  «      |dœz  g fS )N)r   ÚtypezMODIFY %(column)s %(type)s)rE   r›   )	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„   ø€ Ø×Ñ¤<Ñ/Ü‘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_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   rW   r^   rR   rw   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ÐØ#Ðàñ;ó ð;ð ó)ó ð)òò
ò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ôS
Ð3õ S
r   