o
    ÔŸŽi6  ã                   @   s�   d dl Z d dlmZ d dlmZ d dlmZ dd„ Ze jdd„ ƒZ	e jd	d
„ ƒZ
er8d dlmZmZ dd„ ZdS d dlZd dlmZ dd„ ZdS )é    N)Úconnections)ÚNO_DB_ALIAS)Úis_psycopg3c                 C   s|   t |   ¡ �.}| d|f¡ g }g }|D ]}| |d ¡ | |d ¡ qt|ƒt|ƒfW  d   ƒ S 1 s7w   Y  d S )Nz4SELECT oid, typarray FROM pg_type WHERE typname = %sr   é   )r   ÚcursorÚexecuteÚappendÚtuple)Úconnection_aliasÚ	type_namer   ÚoidsÚ
array_oidsÚrow© r   úiC:\Users\psant\Downloads\Anu Raj Backend\school\venv\Lib\site-packages\django/contrib/postgres/signals.pyÚget_type_oids   s   ÿ$÷r   c                 C   ó
   t | dƒS )z$Return hstore and hstore array OIDs.ÚhstoreN©r   ©r
   r   r   r   Úget_hstore_oids   ó   
r   c                 C   r   )z$Return citext and citext array OIDs.ÚcitextNr   r   r   r   r   Úget_citext_oids   r   r   )ÚTypeInfor   c           	      K   sˆ   | j dks
| jtkrd S t| jƒ\}}t||ƒD ]\}}td||ƒ}t || j¡ qt	| jƒ\}}|D ]}tdd|ƒ}| 
| j¡ q3d S )NÚ
postgresqlr   r   r   )ÚvendorÚaliasr   r   Úzipr   r   Úregister_hstoreÚ
connectionr   Úregister)	r    Úkwargsr   r   ÚoidÚ	array_oidZtiÚ_Úcitext_oidsr   r   r   Úregister_type_handlers$   s   þr'   )r   c                 K   sv   | j dks
| jtkrd S t| jƒ\}}|rt| jd||d� t| jƒ\}}|r9tj 	|dtj
¡}tj |d ¡ d S d S )Nr   T)Zgloballyr#   r$   zcitext[])r   r   r   r   r   r    r   Úpsycopg2Ú
extensionsZnew_array_typeÚSTRINGZregister_type)r    r"   r   r   r&   Z
array_typer   r   r   r'   6   s   	
ÿÿü)Ú	functoolsZ	django.dbr   Zdjango.db.backends.base.baser   Z)django.db.backends.postgresql.psycopg_anyr   r   Ú	lru_cacher   r   Zpsycopg.typesr   r   r'   r(   Zpsycopg2.extrasr   r   r   r   r   Ú<module>   s    

