Ë
    élÖi¤  ã                   ó®   — d dl mZmZ d dlmZmZmZ d dlmZ d dl	m
Z
mZ d dlmZmZ d dlmZ d dlmZmZmZmZmZ  edd	d	¬
«       G d„ de«      «       Zy)é    )Ú	dataclassÚfield)Ú	FrozenSetÚListÚOptional)ÚBaseRelation)ÚRelationConfigÚRelationType)ÚRelationConfigChangeActionÚRelationResults)ÚDbtRuntimeError)ÚMAX_CHARACTERS_IN_IDENTIFIERÚPostgresIndexConfigÚPostgresIndexConfigChangeÚPostgresMaterializedViewConfigÚ.PostgresMaterializedViewConfigChangeCollectionTF)ÚfrozenÚeqÚreprc                   ó¢   — e Zd ZU  ed„ ¬«      Zee   ed<    ed„ ¬«      Zee   ed<   d„ Z	d„ Z
ded	ed
ee   fd„Zdee   dee   d
ee   fd„Zy)ÚPostgresRelationc                  óT   — t        t        j                  t        j                  h«      S ©N©Ú	frozensetr
   ÚViewÚTable© ó    úc/var/www/html/strategist-ai/venv_dbt/lib/python3.12/site-packages/dbt/adapters/postgres/relation.pyú<lambda>zPostgresRelation.<lambda>   ó"   € ¤	ä×!Ñ!Ü×"Ñ"ðó!
€ r   )Údefault_factoryÚrenameable_relationsc                  óT   — t        t        j                  t        j                  h«      S r   r   r   r   r    r!   zPostgresRelation.<lambda>    r"   r   Úreplaceable_relationsc                 óØ   — | j                   �^| j                  �Qt        | j                   «      | j                  «       kD  r*t	        d| j                   › d| j                  «       › d�«      ‚y y y )NzRelation name 'z' is longer than z characters)Ú
identifierÚtypeÚlenÚrelation_max_name_lengthr   ©Úselfs    r    Ú__post_init__zPostgresRelation.__post_init__(   sw   € ð �O‰OÐ'Ø—	‘	Ð%Ü�D—O‘OÓ$ t×'DÑ'DÓ'FÒFä!Ø! $§/¡/Ð!2ð 3"Ø"&×"?Ñ"?Ó"AÐ!BÀ+ðOóð ð Gð &ð (r   c                 ó   — t         S r   )r   r,   s    r    r+   z)PostgresRelation.relation_max_name_length5   s   € Ü+Ð+r   Úrelation_resultsÚrelation_configÚreturnc                 óÞ   — t        «       }t        j                  |«      }t        j                  |«      }| j	                  |j
                  |j
                  «      |_        |j                  r|S y r   )r   r   Úfrom_relation_resultsÚfrom_configÚ_get_index_config_changesÚindexesÚhas_changes)r-   r0   r1   Úconfig_change_collectionÚexisting_materialized_viewÚnew_materialized_views         r    Ú.get_materialized_view_config_change_collectionz?PostgresRelation.get_materialized_view_config_change_collection8   so   € ô $RÓ#SÐ ä%C×%YÑ%YØó&
Ð"ô !?× JÑ JÈ?Ó [Ðà+/×+IÑ+IØ&×.Ñ.Ð0E×0MÑ0Mó,
Ð Ô(ð $×/Ò/Ø+Ð+Ør   Úexisting_indexesÚnew_indexesc                 ó(  — |j                  |«      D �cg c](  }t        j                  t        j                  |dœ«      ‘Œ* }}|j                  |«      D �cg c](  }t        j                  t        j
                  |dœ«      ‘Œ* }}||z   S c c}w c c}w )a~  
        Get the index updates that will occur as a result of a new run

        There are four scenarios:

        1. Indexes are equal -> don't return these
        2. Index is new -> create these
        3. Index is old -> drop these
        4. Indexes are not equal -> drop old, create new -> two actions

        *Note:*
            The order of the operations matters here because if the same index is dropped and recreated
            (e.g. via --full-refresh) then we need to drop it first, then create it.

        Returns: an ordered list of index updates in the form {"action": "drop/create", "context": <IndexConfig>}
        )ÚactionÚcontext)Ú
differencer   Ú	from_dictr   ÚdropÚcreate)r-   r=   r>   ÚindexÚdrop_changesÚcreate_changess         r    r6   z*PostgresRelation._get_index_config_changesN   s¤   € ð2 *×4Ñ4°[ÓAö	
ð ô &×/Ñ/Ü5×:Ñ:ÀuÑMõð
ˆð 
ð %×/Ñ/Ð0@ÓAö	
ð ô &×/Ñ/Ü5×<Ñ<ÈÑOõð
ˆð 
ð ˜nÑ,Ð,ùò
ùò
s   ”-B
Á-BN)Ú__name__Ú
__module__Ú__qualname__r   r$   r   r
   Ú__annotations__r&   r.   r+   r   r	   r   r   r<   r   r   r   r6   r   r   r    r   r      sœ   … á49ñ
ô5Ð˜) LÑ1ó ñ 6;ñ
ô6Ð˜9 \Ñ2ó òò,ðØ /ðØBPðà	Ð@Ñ	Aóð,!-à#Ð$7Ñ8ð!-ð Ð2Ñ3ð!-ð 
Ð'Ñ	(ô	!-r   r   N)Údataclassesr   r   Útypingr   r   r   Údbt.adapters.base.relationr   Údbt.adapters.contracts.relationr	   r
   Údbt.adapters.relation_configsr   r   Údbt_common.exceptionsr   Ú&dbt.adapters.postgres.relation_configsr   r   r   r   r   r   r   r   r    ú<module>rT      sO   ðß (ß ,Ñ ,å 3ß H÷õ 2÷õ ñ �$˜5 uÔ-ôY-�|ó Y-ó .ñY-r   