o
    ˷e                     @   sh   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 j	dd Z
e j	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   V/var/www/ideatree/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    

