o
    uvXjÅ  ã                   @   sl   d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlmZ e  	¡ dd„ ƒZ
e  	¡ dd	„ ƒZd
d„ ZdS )é    N)ÚProgrammingError)Úregister_hstore)Úconnections)ÚNO_DB_ALIASc                 C   sx   t |   ¡ �,}| d¡ g }g }|D ]}| |d ¡ | |d ¡ qt|ƒt|ƒfW  d  ƒ S 1 s5w   Y  dS )z$Return hstore and hstore array OIDs.zlSELECT t.oid, typarray FROM pg_type t JOIN pg_namespace ns ON typnamespace = ns.oid WHERE typname = 'hstore'r   é   N)r   ÚcursorÚexecuteÚappendÚtuple)Úconnection_aliasr   ÚoidsÚ
array_oidsÚrow© r   ú\/var/www/html/myproject/venv/lib/python3.10/site-packages/django/contrib/postgres/signals.pyÚget_hstore_oids   s   ÿ$ôr   c                 C   sL   t |   ¡ �}| d¡ tdd„ |D ƒƒW  d  ƒ S 1 sw   Y  dS )zReturn citext array OIDs.z5SELECT typarray FROM pg_type WHERE typname = 'citext'c                 s   s   � | ]}|d  V  qdS )r   Nr   )Ú.0r   r   r   r   Ú	<genexpr>"   s   € z"get_citext_oids.<locals>.<genexpr>N)r   r   r   r
   )r   r   r   r   r   Úget_citext_oids   s   
$þr   c                 K   s–   | j dks
| jtkrd S zt| jƒ\}}t| jd||d� W n	 ty'   Y nw zt| jƒ}tj	 
|dtj¡}tj	 |d ¡ W d S  tyJ   Y d S w )NÚ
postgresqlT)ÚgloballyÚoidÚ	array_oidzcitext[])ÚvendorÚaliasr   r   r   Ú
connectionr   r   Úpsycopg2Ú
extensionsÚnew_array_typeÚSTRINGÚregister_type)r   Úkwargsr   r   Úcitext_oidsÚ
array_typer   r   r   Úregister_type_handlers%   s   	÷
ûr$   )Ú	functoolsr   r   Úpsycopg2.extrasr   Ú	django.dbr   Údjango.db.backends.base.baser   Ú	lru_cacher   r   r$   r   r   r   r   Ú<module>   s    

