a
    xd                     @   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 |   X}|d g }g }|D ] }||d  ||d  q$t|t|fW  d   S 1 sj0    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   W/var/www/html/Ranjet/env/lib/python3.9/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>0    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>"       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yN   Y n0 z.t| j}tj	
|dtj}tj	|d  W n ty   Y n0 d S )NZ
postgresqlT)ZgloballyoidZ	array_oidzcitext[])vendoraliasr   r   r   
connectionr   r   psycopg2
extensionsZnew_array_typeSTRINGZregister_type)r   kwargsr   r   Zcitext_oidsZ
array_typer   r   r   register_type_handlers%   s    	
r   )	functoolsr   r   Zpsycopg2.extrasr   Z	django.dbr   Zdjango.db.backends.base.baser   	lru_cacher   r   r   r   r   r   r   <module>   s   

