Ë
    ùŠAj®
  ã                  óê   — U d Z ddlmZ ddlmZ ddlmZmZmZ ddl	m
Z ddlmZ dZdZeZed	ed
z  ddœededz  ddœiZded<   dd„Zdd„Zdd„Zdd„Zd d„Zd!d„Zd"d„Z G d„ de«      Zd#d„Zd$d„Zy)%z2Profils de base SQLite (production / import test).é    )Úannotations)ÚPath)ÚFlaskÚhas_request_contextÚsession)ÚSession)ÚDATA_DIRÚprodÚimportÚ
Productionzcopropriete.dbzdb-badge-prod)ÚlabelÚpathÚbadge_classzImport (test)zimport-test.dbzdb-badge-importz dict[str, dict[str, str | Path]]ÚDATABASE_PROFILESc                 óH   — t         D � ci c]  } | t        | «      “Œ c} S c c} w ©N)r   Úprofile_uri©Úkeys    ú)Y:\copro_gestion\app\database_profiles.pyÚsqlalchemy_bindsr      s&   € Ý->Ó?Ñ-> cˆC”˜SÓ!Ñ!Ð->Ñ?Ð?ùÒ?s   ‰c                ón   — | t         vrt        } t        t         |    d   «      j                  «       }d|› �S )Nr   z
sqlite:///)r   ÚDEFAULT_PROFILEr   Úresolve)r   r   s     r   r   r   !   s;   € Ø
Ô#Ñ#ÜˆÜÔ! #Ñ& vÑ.Ó/×7Ñ7Ó9€DØ˜�vÐÐó    c                ó\   — t        t        j                  | t        t           «      d   «      S )Nr   ©Ústrr   Úgetr   r   s    r   Úprofile_labelr    (   s&   € ÜÔ ×$Ñ$ SÔ*;¼OÑ*LÓMÈgÑVÓWÐWr   c                ó\   — t        t        j                  | t        t           «      d   «      S )Nr   r   r   s    r   Úprofile_badge_classr"   ,   s*   € ÜÜ×Ñ˜cÔ#4´_Ñ#EÓFÀ}ÑUóð r   c                ó,   — t        t        |    d   «      S )Nr   )r   r   r   s    r   Úprofile_pathr$   2   s   € ÜÔ! #Ñ& vÑ.Ó/Ð/r   c                 óv   — t        «       st        S t        j                  dt        «      } | t        vrt        S | S )NÚ
db_profile)r   r   r   r   r   r   s    r   Úsession_profile_keyr'   6   s2   € ÜÔ ÜÐÜ
�+‰+�l¤OÓ
4€CØ
Ô#Ñ#ÜÐØ€Jr   c                ó^   — | t         vrt        } | t        d<   t        j                  dd «       y )Nr&   Úcopropriete_id)r   r   r   Úpopr   s    r   Úset_session_profiler+   ?   s)   € Ø
Ô#Ñ#ÜˆØ„GˆLÑÜ‡K�KÐ  $Õ'r   c                  ó$   ‡ — e Zd ZdZdˆ fd„	Zˆ xZS )ÚProfileRoutingSessionuC   Route les requÃªtes ORM vers prod ou import selon la session Flask.c                ó�   •— t        «       r)t        «       }| j                  j                  }||v r||   S t	        ‰| �  d|||dœ|¤ŽS )N)ÚmapperÚclauseÚbind© )r   r'   Ú_dbÚenginesÚsuperÚget_bind)Úselfr/   r0   r1   Úkwargsr   r4   Ú	__class__s          €r   r6   zProfileRoutingSession.get_bindI   sM   ø€ ÜÔ Ü%Ó'ˆCØ—h‘h×&Ñ&ˆGØ�g‰~Ø˜s‘|Ð#Ü‰wÑÐR v°fÀ4ÑRÈ6ÑRÐRr   )NNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r6   Ú__classcell__)r9   s   @r   r-   r-   F   s   ø„ ÙM÷Sñ Sr   r-   c                ó:   — t        |«      }|| j                  d<   |S )zQEnregistre le profil en session (le moteur est choisi par ProfileRoutingSession).Ú_ACTIVE_DB_PROFILE)r   Úconfig)ÚappÚdbr   Úuris       r   Úactivate_profilerE   R   s    € ä
�cÓ
€CØ'*€C‡J�JÐ#Ñ$Ø€Jr   c                ó2   ‡ ‡— ‰ j                   ˆ ˆfd„«       }y )Nc                 ó0   •— t        ‰ ‰t        «       «       y r   )rE   r'   )rB   rC   s   €€r   Ú_remember_database_profilez;register_database_hooks.<locals>._remember_database_profileZ   s   ø€ ä˜˜bÔ"5Ó"7Õ8r   )Úbefore_request)rB   rC   rH   s   `` r   Úregister_database_hooksrJ   Y   s   ù€ Ø×Ñô9ó ñ9r   N)Úreturnzdict[str, str])r   r   rK   r   )r   r   rK   r   )rK   r   )r   r   rK   ÚNone)rB   r   r   r   rK   r   )rB   r   rK   rL   )r=   Ú
__future__r   Úpathlibr   Úflaskr   r   r   Úflask_sqlalchemy.sessionr   Ú
FSQSessionrA   r	   ÚPROFILE_PRODÚPROFILE_IMPORTr   r   Ú__annotations__r   r   r    r"   r$   r'   r+   r-   rE   rJ   r2   r   r   Ú<module>rU      s¨   ðÚ 8Ý "å ç 5Ñ 5Ý :å à€Ø€Ø€ð ØØÐ+Ñ+Ø&ñð
 Ø ØÐ+Ñ+Ø(ñð7Ð Ð3ó ó@óóXóó0óó(ô	S˜Jô 	Sóô9r   