o
    Ñ·6i•
  ã                   @  s¸   d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ G dd„ deƒZd#dd„Zd$d d!„Zd"S )%é    )Úannotations)ÚAny)ÚCallable)Ú	AppConfig)Úsettings)ÚBaseDatabaseWrapper)Úconnection_created)Úgettext_lazy)Úregister_checks)ÚREWRITE_MARKER)Úrewrite_query)Úmysql_connectionsc                   @  s6   e Zd ZdZedƒZddd„Zddd„Zdd	d
„ZdS )ÚMySQLConfigÚdjango_mysqlzMySQL extensionsÚreturnÚNonec                 C  s   |   ¡  |  ¡  tƒ  d S )N)Úadd_database_instrumentationÚadd_lookupsr
   )Úself© r   úV/var/www/hoanhtaovolam_webdjango/env/lib/python3.10/site-packages/django_mysql/apps.pyÚready   s   
zMySQLConfig.readyc                 C  s6   t tddƒsd S tƒ D ]\}}t|ƒ qt t¡ d S ©NÚDJANGO_MYSQL_REWRITE_QUERIESF)Úgetattrr   r   Úinstall_rewrite_hookr   Úconnect)r   Ú_aliasÚ
connectionr   r   r   r      s   ÿ
z(MySQLConfig.add_database_instrumentationc                 C  s|   ddl m} ddl m} ddlm} ddlm} ddlm} | |¡ | |¡ | |¡ | |¡ | |¡ | |¡ d S )Nr   )Ú	CharField)Ú	TextField)ÚCaseSensitiveExact)ÚSoundex)Ú
SoundsLike)Údjango.db.modelsr   r    Údjango_mysql.models.lookupsr!   r"   r#   Úregister_lookup)r   r   r    r!   r"   r#   r   r   r   r   $   s   




zMySQLConfig.add_lookupsN)r   r   )	Ú__name__Ú
__module__Ú__qualname__ÚnameÚ_Úverbose_namer   r   r   r   r   r   r   r      s    

	r   r   r   Úkwargsr   r   r   c                 K  s.   | j dkrdS t| jvr| j dt¡ dS dS )af  
    Rather than use the documented API of the `execute_wrapper()` context
    manager, directly insert the hook. This is done because:
    1. Deleting the context manager closes it, so it's not possible to enter it
       here and not exit it, unless we store it forever in some variable.
    2. We want to be idempotent and only install the hook once.
    ÚmysqlNr   )ÚvendorÚrewrite_hookÚexecute_wrappersÚinsert)r   r-   r   r   r   r   4   s
   

ÿr   Úexecuteú/Callable[[str, str, bool, dict[str, Any]], Any]ÚsqlÚstrÚparamsÚmanyÚboolÚcontextúdict[str, Any]c                 C  s*   t tddƒrt|v rt|ƒ}| ||||ƒS r   )r   r   r   r   )r3   r5   r7   r8   r:   r   r   r   r0   B   s
   
ÿr0   N)r   r   r-   r   r   r   )r3   r4   r5   r6   r7   r6   r8   r9   r:   r;   r   r   )Ú
__future__r   Útypingr   r   Údjango.appsr   Údjango.confr   Údjango.db.backends.base.baser   Údjango.db.backends.signalsr   Údjango.utils.translationr	   r+   Údjango_mysql.checksr
   Údjango_mysql.rewrite_queryr   r   Údjango_mysql.utilsr   r   r   r0   r   r   r   r   Ú<module>   s    
"