a
    xd                     @   s  d dl mZmZmZ d dlmZmZ d dlmZm	Z	 d dl
mZ G dd deZG dd deZG d	d
 d
eZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd dZG dd deeZG dd dee	ZdS )    )get_citext_oidsget_hstore_oidsregister_type_handlers)NotSupportedErrorrouter)AddIndexRemoveIndex)	Operationc                   @   s8   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d ZdS )CreateExtensionTc                 C   s
   || _ d S Nname)selfr    r   Z/var/www/html/Ranjet/env/lib/python3.9/site-packages/django/contrib/postgres/operations.py__init__   s    zCreateExtension.__init__c                 C   s   d S r   r   )r   	app_labelstater   r   r   state_forwards   s    zCreateExtension.state_forwardsc                 C   sT   |j jdkst|j j|s d S |d|| j  t	  t
	  t|j  d S )NZ
postgresqlz!CREATE EXTENSION IF NOT EXISTS %s)
connectionvendorr   allow_migratealiasexecute
quote_namer   r   cache_clearr   r   r   r   schema_editor
from_stateto_stater   r   r   database_forwards   s    
z!CreateExtension.database_forwardsc                 C   s>   t |jj|sd S |d|| j  t  t	  d S )NzDROP EXTENSION %s)
r   r   r   r   r   r   r   r   r   r   r   r   r   r   database_backwards!   s
    z"CreateExtension.database_backwardsc                 C   s
   d| j  S )NzCreates extension %sr   r   r   r   r   describe)   s    zCreateExtension.describeN)	__name__
__module____qualname__Z
reversibler   r   r    r!   r#   r   r   r   r   r
   	   s   r
   c                   @   s   e Zd Zdd ZdS )BloomExtensionc                 C   s
   d| _ d S )NZbloomr   r"   r   r   r   r   /   s    zBloomExtension.__init__Nr$   r%   r&   r   r   r   r   r   r'   -   s   r'   c                   @   s   e Zd Zdd ZdS )BtreeGinExtensionc                 C   s
   d| _ d S )NZ	btree_ginr   r"   r   r   r   r   5   s    zBtreeGinExtension.__init__Nr(   r   r   r   r   r)   3   s   r)   c                   @   s   e Zd Zdd ZdS )BtreeGistExtensionc                 C   s
   d| _ d S )NZ
btree_gistr   r"   r   r   r   r   ;   s    zBtreeGistExtension.__init__Nr(   r   r   r   r   r*   9   s   r*   c                   @   s   e Zd Zdd ZdS )CITextExtensionc                 C   s
   d| _ d S )NZcitextr   r"   r   r   r   r   A   s    zCITextExtension.__init__Nr(   r   r   r   r   r+   ?   s   r+   c                   @   s   e Zd Zdd ZdS )CryptoExtensionc                 C   s
   d| _ d S )NZpgcryptor   r"   r   r   r   r   G   s    zCryptoExtension.__init__Nr(   r   r   r   r   r,   E   s   r,   c                   @   s   e Zd Zdd ZdS )HStoreExtensionc                 C   s
   d| _ d S )NZhstorer   r"   r   r   r   r   M   s    zHStoreExtension.__init__Nr(   r   r   r   r   r-   K   s   r-   c                   @   s   e Zd Zdd ZdS )TrigramExtensionc                 C   s
   d| _ d S )NZpg_trgmr   r"   r   r   r   r   S   s    zTrigramExtension.__init__Nr(   r   r   r   r   r.   Q   s   r.   c                   @   s   e Zd Zdd ZdS )UnaccentExtensionc                 C   s
   d| _ d S )NZunaccentr   r"   r   r   r   r   Y   s    zUnaccentExtension.__init__Nr(   r   r   r   r   r/   W   s   r/   c                   @   s   e Zd Zdd ZdS )NotInTransactionMixinc                 C   s   |j jrtd| jj d S )Nz_The %s operation cannot be executed inside a transaction (set atomic = False on the migration).)r   Zin_atomic_blockr   	__class__r$   )r   r   r   r   r   _ensure_not_in_transaction^   s    z0NotInTransactionMixin._ensure_not_in_transactionN)r$   r%   r&   r2   r   r   r   r   r0   ]   s   r0   c                   @   s,   e Zd ZdZdZdd Zdd Zdd Zd	S )
AddIndexConcurrentlyzDCreate an index using PostgreSQL's CREATE INDEX CONCURRENTLY syntax.Fc                 C   s   d| j jd| j j| jf S )Nz7Concurrently create index %s on field(s) %s of model %sz, )indexr   joinfields
model_namer"   r   r   r   r#   k   s
    zAddIndexConcurrently.describec                 C   s@   |  | |j|| j}| |jj|r<|j|| jdd d S NT)Zconcurrently)	r2   apps	get_modelr7   allow_migrate_modelr   r   	add_indexr4   r   r   r   r   r   modelr   r   r   r    r   s    
z&AddIndexConcurrently.database_forwardsc                 C   s@   |  | |j|| j}| |jj|r<|j|| jdd d S r8   )	r2   r9   r:   r7   r;   r   r   remove_indexr4   r=   r   r   r   r!   x   s    
z'AddIndexConcurrently.database_backwardsNr$   r%   r&   __doc__Zatomicr#   r    r!   r   r   r   r   r3   g   s
   r3   c                   @   s,   e Zd ZdZdZdd Zdd Zdd Zd	S )
RemoveIndexConcurrentlyzBRemove an index using PostgreSQL's DROP INDEX CONCURRENTLY syntax.Fc                 C   s   d| j | jf S )Nz$Concurrently remove index %s from %s)r   r7   r"   r   r   r   r#      s    z RemoveIndexConcurrently.describec                 C   sZ   |  | |j|| j}| |jj|rV|j|| jf }|	| j
}|j||dd d S r8   )r2   r9   r:   r7   r;   r   r   modelsmodel_name_lowerget_index_by_namer   r?   )r   r   r   r   r   r>   Zfrom_model_stater4   r   r   r   r       s    
z)RemoveIndexConcurrently.database_forwardsc                 C   sZ   |  | |j|| j}| |jj|rV|j|| jf }|	| j
}|j||dd d S r8   )r2   r9   r:   r7   r;   r   r   rC   rD   rE   r   r<   )r   r   r   r   r   r>   Zto_model_stater4   r   r   r   r!      s    
z*RemoveIndexConcurrently.database_backwardsNr@   r   r   r   r   rB      s
   rB   N)Zdjango.contrib.postgres.signalsr   r   r   Z	django.dbr   r   Zdjango.db.migrationsr   r   Z$django.db.migrations.operations.baser	   r
   r'   r)   r*   r+   r,   r-   r.   r/   r0   r3   rB   r   r   r   r   <module>   s   $
