Ë
    ¹ûàg8  ã                   óJ   — d dl mZ d dlmZ d dlmZ d dlmZ  G d„ de«      Zy)é    )ÚBaseDatabaseSchemaEditor)ÚIndexColumns)Úsql)Ústrip_quotesc                   óè   ‡ — 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"ˆ fd„	ZdZdZd„ Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ fd„Z	 d#ˆ fd„	Zˆ fd„Zd#d„Zd#d„Zd$ˆ fd„	Zdddddddddddddœˆ fd „
Zd!„ Zˆ xZS )%ÚDatabaseSchemaEditorzeUPDATE %(table)s SET %(column)s = %(default)s WHERE %(column)s IS NULL; SET CONSTRAINTS ALL IMMEDIATEz1ALTER SEQUENCE IF EXISTS %(sequence)s AS %(type)sz,DROP SEQUENCE IF EXISTS %(sequence)s CASCADEzZCREATE INDEX %(name)s ON %(table)s%(using)s (%(columns)s)%(include)s%(extra)s%(condition)szgCREATE INDEX CONCURRENTLY %(name)s ON %(table)s%(using)s (%(columns)s)%(include)s%(extra)s%(condition)szDROP INDEX IF EXISTS %(name)sz*DROP INDEX CONCURRENTLY IF EXISTS %(name)szyCONSTRAINT %(name)s REFERENCES %(to_table)s(%(to_column)s)%(deferrable)s; SET CONSTRAINTS %(namespace)s%(name)s IMMEDIATEzRSET CONSTRAINTS %(name)s IMMEDIATE; ALTER TABLE %(table)s DROP CONSTRAINT %(name)sz,DROP FUNCTION %(procedure)s(%(param_types)s)© c                 ó¦   •— |€t         ‰| �  ||«      S | j                  j                  j	                  t        |«      |«      }t         ‰| �  |d «      S ©N)ÚsuperÚexecuteÚ
connectionÚopsÚcompose_sqlÚstr)Úselfr   ÚparamsÚ	__class__s      €úb/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/django/db/backends/postgresql/schema.pyr   zDatabaseSchemaEditor.execute*   sJ   ø€ àˆ>Ü‘7‘? 3¨Ó/Ð/Ø�o‰o×!Ñ!×-Ñ-¬c°#«h¸Ó?ˆä‰w‰˜s DÓ)Ð)ó    zRALTER TABLE %(table)s ALTER COLUMN %(column)s ADD GENERATED BY DEFAULT AS IDENTITYzEALTER TABLE %(table)s ALTER COLUMN %(column)s DROP IDENTITY IF EXISTSc                 óV   — t        j                  || j                  j                  «      S r   )r   Úquoter   )r   Úvalues     r   Úquote_valuez DatabaseSchemaEditor.quote_value:   s   € Ü�y‰y˜ §¡× :Ñ :Ó;Ð;r   c                 ór   •— t         ‰| �  ||«      }| j                  ||«      }|�|j                  |«       |S r   )r   Ú_field_indexes_sqlÚ_create_like_index_sqlÚappend)r   ÚmodelÚfieldÚoutputÚlike_index_statementr   s        €r   r   z'DatabaseSchemaEditor._field_indexes_sql=   s?   ø€ Ü‘Ñ+¨E°5Ó9ˆØ#×:Ñ:¸5À%ÓHÐØÐ+Ø�M‰MÐ.Ô/Øˆr   c                 óê   — |j                   r|j                  | j                  «      S | j                  j                  j	                  |j                  «       |j                  | j                  «      «      S r   )Úis_relationÚrel_db_typer   Ú
data_typesÚgetÚget_internal_typeÚdb_type©r   r    s     r   Ú_field_data_typez%DatabaseSchemaEditor._field_data_typeD   sY   € Ø×ÒØ×$Ñ$ T§_¡_Ó5Ð5Ø�‰×)Ñ)×-Ñ-Ø×#Ñ#Ó%Ø�M‰M˜$Ÿ/™/Ó*ó
ð 	
r   c              #   óÌ   K  — |j                   j                  «       dk(  r$| j                  |j                   «      E d {  –—†  y | j                  |j                   «      –— y 7 Œ#­w)NÚ
ArrayField)Ú
base_fieldr(   Ú_field_base_data_typesr+   r*   s     r   r/   z+DatabaseSchemaEditor._field_base_data_typesL   sT   è ø€ à×Ñ×-Ñ-Ó/°<Ò?Ø×2Ñ2°5×3CÑ3CÓD×DÑDà×'Ñ'¨×(8Ñ(8Ó9Ó9ð Eús   ‚<A$¾A"¿$A$c                 ó¦  — |j                  | j                  ¬«      }|�³|j                  s|j                  r›d|v ryt	        |dd«      }|s#|j
                  rt	        |j                  dd«      }|r| j                  |«      sy|j                  d«      r| j                  ||gddg¬«      S |j                  d	«      r| j                  ||gdd
g¬«      S y)z£
        Return the statement to create an index with varchar operator pattern
        when the column type is 'varchar' or 'text', otherwise return None.
        ©r   Nú[Údb_collationÚvarcharÚ_likeÚvarchar_pattern_ops)ÚfieldsÚsuffixÚ	opclassesÚtextÚtext_pattern_ops)
r)   r   Údb_indexÚuniqueÚgetattrr$   Útarget_fieldÚ_is_collation_deterministicÚ
startswithÚ_create_index_sql)r   r   r    r)   Úcollation_names        r   r   z+DatabaseSchemaEditor._create_like_index_sqlS   sí   € ð
 —-‘-¨4¯?©?�-Ó;ˆØÐ E§N¢N°e·l²lð �g‰~Øô % U¨N¸DÓAˆNÙ! e×&7Ò&7Ü!(¨×);Ñ);¸^ÈTÓ!R�Ù d×&FÑ&FÀ~Ô&VØØ×!Ñ! )Ô,Ø×-Ñ-ØØ!˜7Ø"Ø4Ð5ð	 .ó ð ð ×#Ñ# FÔ+Ø×-Ñ-ØØ!˜7Ø"Ø1Ð2ð	 .ó ð ð r   c                 ó  — d}|j                  «       }|j                  «       }|dk(  r=||k(  r8t        | j                  |«      «      t        | j                  |«      «      k7  r|S y| j                  |«      | j                  |«      k7  r|S y)Nz USING %(column)s::%(type)sr-   Ú )r(   Úlistr/   r+   )r   Ú	new_fieldÚ	old_fieldÚ	using_sqlÚnew_internal_typeÚold_internal_types         r   Ú
_using_sqlzDatabaseSchemaEditor._using_sqlz   sš   € Ø1ˆ	Ø%×7Ñ7Ó9ÐØ%×7Ñ7Ó9ÐØ Ò,Ð1BÐFWÒ1Wä�D×/Ñ/°	Ó:Ó;¼tØ×+Ñ+¨IÓ6ó@ò ð !Ð ð ð ×"Ñ" 9Ó-°×1FÑ1FÀyÓ1QÒQØÐØr   c                 óê   — | j                   j                  «       5 }| j                   j                  j                  ||«      D ]  }|d   |k(  sŒ|d   c cd d d «       S  	 d d d «       y # 1 sw Y   y xY w)NÚcolumnÚname)r   ÚcursorÚintrospectionÚget_sequences)r   ÚtablerN   rP   Úsequences        r   Ú_get_sequence_namez'DatabaseSchemaEditor._get_sequence_nameˆ   sw   € Ø�_‰_×#Ñ#Ó%ð 	,¨Ø ŸO™O×9Ñ9×GÑGÈÐPUÓVò ,�Ø˜HÑ%¨Ó/Ø# FÑ+Ñ+÷	,ñ 	,ñ,÷	,ð ÷		,ð ús   ›2A)ÁA)ÁA)Á)A2c           	      ó^  •— |j                  | j                  ¬«      }|d   }|j                  s|j                  rº|j	                  d«      r|j	                  d«      rD|j	                  d«      r|j	                  d«      r"|j	                  d«      re|j	                  d«      sT| j                  |j                  j                  |j                  gd¬«      }	| j                  | j                  ||	«      «       d| _        | j                  ||«      x}
r| xj                  |
z  c_        |j                  «       }|j                  «       }t        |j                  j                  «      }h d	£}||v }||v }|rn|slt        |j                  «      }| j                  | j                  |«      |d
dœz  g f| j                   | j                  |«      | j                  |«      dœz  g fgfS |r½|s»| j                  | j"                  | j                  |«      | j                  t        |j                  «      «      dœz  «       t        |j                  «      }t$        ‰| �M  ||||||«      \  }}g }| j)                  ||«      x}r#| j*                  d| j                  |«      iz  g fg}||fS |rz|rx||k7  rst$        ‰| �M  ||||||«      \  }}t        |j                  «      }ddddœ}g }| j)                  ||«      x}r'| j,                  | j                  |«      ||   dœz  g fg}||fS t$        ‰| �M  ||||||«      S )Nr1   Útyper4   r:   Úcitextr5   ©r8   z2ALTER COLUMN %(column)s TYPE %(type)s%(collation)s>   Ú	AutoFieldÚBigAutoFieldÚSmallAutoFieldrE   )rN   rW   Ú	collation)rS   rN   rT   ÚintegerÚbigintÚsmallint)rZ   r[   r\   )rT   rW   )Údb_parametersr   r<   r=   rA   Ú_create_index_nameÚ_metaÚdb_tablerN   r   Ú_delete_index_sqlÚsql_alter_column_typerL   r(   r   Ú
quote_nameÚsql_add_identityÚsql_drop_indentityr   Ú_alter_column_type_sqlrU   Úsql_delete_sequenceÚsql_alter_sequence_type)r   r   rH   rG   Únew_typeÚold_collationÚnew_collationÚold_db_paramsÚold_typeÚ
index_namerI   rJ   rK   rS   Úauto_field_typesÚold_is_autoÚnew_is_autorN   ÚfragmentÚ_Úother_actionsÚsequence_nameÚdb_typesr   s                          €r   rj   z+DatabaseSchemaEditor._alter_column_type_sql�   sš  ø€ ð
 "×/Ñ/¸4¿?¹?Ð/ÓKˆØ  Ñ(ˆØ×Ò )×"2Ò"2Ø× Ñ  Ô+°H×4GÑ4GÈ	Ô4RØ×#Ñ# FÔ+°H×4GÑ4GÈÔ4OØ×#Ñ# HÔ-°h×6IÑ6IÈ(Ô6Sà×0Ñ0Ø—‘×$Ñ$ y×'7Ñ'7Ð&8Àð 1ó ˆJð �L‰L˜×/Ñ/°°zÓBÔCð Að 	Ô"ð Ÿ™¨	°9Ó=Ð=ˆ9Ð=Ø×&Ò&¨)Ñ3Õ&Ø%×7Ñ7Ó9ÐØ%×7Ñ7Ó9Ðä˜UŸ[™[×1Ñ1Ó2ˆò
Ðð
 (Ð+;Ð;ˆØ'Ð+;Ð;ˆÙ™{Ü! )×"2Ñ"2Ó3ˆFð ×.Ñ.à"&§/¡/°&Ó"9Ø (Ø%'ññð ðð ×-Ñ-à%)§_¡_°UÓ%;Ø&*§o¡o°fÓ&=ññð
 ðð	ðð ñ* ¡ð �L‰LØ×'Ñ'à!Ÿ_™_¨UÓ3Ø"Ÿo™o¬l¸9×;KÑ;KÓ.LÓMññôô " )×"2Ñ"2Ó3ˆFÜ™'Ñ8Ø�y )¨X°}Àmó‰KˆH�að
 ˆMØ $× 7Ñ 7¸¸vÓ FÐFˆ}ÐFð ×0Ñ0à&¨¯©¸Ó(Fðñð ðð!�ð ˜]Ð*Ð*Ù™[Ð->ÐBSÒ-SÜ™'Ñ8Ø�y )¨X°}Àmó‰KˆH�aô " )×"2Ñ"2Ó3ˆFà&Ø (Ø",ñˆHð ˆMØ $× 7Ñ 7¸¸vÓ FÐFˆ}ÐFð ×4Ñ4à(,¯©¸Ó(FØ$,Ð->Ñ$?ññð
 ðð	!�ð ˜]Ð*Ð*ä‘7Ñ1Ø�y )¨X°}Àmóð r   Fc	           
      óê  •— t         ‰| �  ||||||||«       |j                  s|j                  s|j                  s|j                  s1|j                  r%| j	                  ||«      }	|	�| j                  |	«       |j                  ro|j                  sb|j                  sU| j                  |j                  j                  |j                  gd¬«      }
| j                  | j                  ||
«      «       y y y y )Nr5   rY   )r   Ú_alter_fieldr<   r=   r   r   rb   rc   rd   rN   re   )r   r   rH   rG   rq   rm   rp   Únew_db_paramsÚstrictr"   Úindex_to_remover   s              €r   r|   z!DatabaseSchemaEditor._alter_field  sí   ø€ ô 	‰ÑØØØØØØØØô		
ð ×#Ò# y×'7Ò'7¸Y×=OÒ=OØ× Ò  Y×%5Ò%5à#'×#>Ñ#>¸uÀiÓ#PÐ Ø#Ð/Ø—‘Ð1Ô2ð ×Ò Y×%7Ò%7¸9×;KÒ;KØ"×5Ñ5Ø—‘×$Ñ$ y×'7Ñ'7Ð&8Àð 6ó ˆOð �L‰L˜×/Ñ/°°ÓGÕHð	 <LÐ%7Ðr   c                 ó`   •— |rt        ||| j                  ||¬«      S t        ‰| �  ||||«      S )N)Úcol_suffixesr9   )r   rg   r   Ú_index_columns)r   rS   Úcolumnsr�   r9   r   s        €r   r‚   z#DatabaseSchemaEditor._index_columns&  s>   ø€ ÙÜØØØ—‘Ø)Ø#ôð ô ‰wÑ% e¨W°lÀIÓNÐNr   c                 óN   — | j                  |j                  || |¬«      d ¬«       y )N©Úconcurrently)r   )r   Ú
create_sql©r   r   Úindexr†   s       r   Ú	add_indexzDatabaseSchemaEditor.add_index1  s*   € Ø�‰Ø×Ñ˜U D°|ÐÓDÈTð 	õ 	
r   c                 óJ   — | j                  |j                  || |¬«      «       y )Nr…   )r   Ú
remove_sqlrˆ   s       r   Úremove_indexz!DatabaseSchemaEditor.remove_index6  s    € Ø�‰�U×%Ñ% e¨TÀÐ%ÓMÕNr   Nc                 óZ   •— |r| j                   n| j                  }t        ‰| �  |||«      S r   )Úsql_delete_index_concurrentlyÚsql_delete_indexr   re   )r   r   rO   r   r†   r   s        €r   re   z&DatabaseSchemaEditor._delete_index_sql9  s7   ø€ ñ ð ×.Ò.à×&Ñ&ð 	ô
 ‰wÑ(¨°°cÓ:Ð:r   rE   )r7   rO   r8   ÚusingÚdb_tablespacer�   r   r9   Ú	conditionr†   ÚincludeÚexpressionsc                óv   •— |xs |s| j                   n| j                  }t        ‰| �  |||||||||	|
||¬«      S )N)r7   rO   r8   r‘   r’   r�   r   r9   r“   r”   r•   )Úsql_create_indexÚsql_create_index_concurrentlyr   rB   )r   r   r7   rO   r8   r‘   r’   r�   r   r9   r“   r†   r”   r•   r   s                 €r   rB   z&DatabaseSchemaEditor._create_index_sqlA  sf   ø€ ð" ò 
áð ×!Ò!à×3Ñ3ð 	ô
 ‰wÑ(ØØØØØØ'Ø%ØØØØØ#ð )ó 
ð 	
r   c                 óº   — | j                   j                  «       5 }|j                  d|g«       |j                  «       }|r|d   nd cd d d «       S # 1 sw Y   y xY w)Nz‚
                SELECT collisdeterministic
                FROM pg_collation
                WHERE collname = %s
                r   )r   rP   r   Úfetchone)r   rC   rP   Úrows       r   r@   z0DatabaseSchemaEditor._is_collation_deterministicf  s[   € Ø�_‰_×#Ñ#Ó%ð 
	+¨Ø�N‰Nðð
  Ð ôð —/‘/Ó#ˆCÙ �3�q’6 d÷
	+÷ 
	+ò 
	+ús   ›,AÁA)r	   )F)NF) Ú__name__Ú
__module__Ú__qualname__Úsql_update_with_defaultrl   rk   r—   r˜   r�   r�   Úsql_create_column_inline_fkÚsql_delete_fkÚsql_delete_procedurer   rh   ri   r   r   r+   r/   r   rL   rU   rj   r|   r‚   rŠ   r�   re   rB   r@   Ú__classcell__)r   s   @r   r   r      só   ø„ ð	*ð ð RÐØHÐð	9ð ð
	9ð "ð 7ÐØ$PÐ!ð
	<ð  ð	9ð ð JÐõ*ð	+ð ð
 	Pð ò<ôò
ò:ò%òNòôqðx õ"IôH	Oó
ó
Oõ;ð ØØØØØØØØØØØö#
öJ+r   r   N)	Údjango.db.backends.base.schemar   Ú!django.db.backends.ddl_referencesr   Ú)django.db.backends.postgresql.psycopg_anyr   Údjango.db.backends.utilsr   r   r	   r   r   ú<module>r¨      s    ðÝ CÝ :Ý 9Ý 1ôj+Ð3õ j+r   