
    sgh                           d dl mZmZ d dlmZ g dZ G d de      Z G d de      Z G d d	e      Z G d
 de      Z	 G d de      Z
 G d de      Z G d de      Z G d de      Z G d de      Zy)    )FuncIndex)cached_property)
BloomIndex	BrinIndex
BTreeIndexGinIndex	GistIndex	HashIndexSpGistIndexc                   <     e Zd Zed        Zd fd	Zd Zd Z xZS )PostgresIndexc                     t         j                  t        t         j                        z
  t        | j                        z   S N)r   max_name_lengthlensuffixselfs    c/var/www/enzed_healthcare/enzed_env/lib/python3.12/site-packages/django/contrib/postgres/indexes.pyr   zPostgresIndex.max_name_length   s,     $$s5<<'883t{{;KKK    c                     | j                  |       t        |   ||fdd|xs | j                  z  i|}| j	                         }|r1ddj                  |      d|j                  d   |j                  d<   |S )Nusingz	 USING %sz WITH (z, )extra)check_supportedsuper
create_sqlr   get_with_paramsjoinparts)r   modelschema_editorr   kwargs	statementwith_params	__class__s          r   r   zPostgresIndex.create_sql   s    ]+G&=
(3u7K(L
PV
	 **,		+&((IOOG$ r   c                      y r    )r   r#   s     r   r   zPostgresIndex.check_supported%   s    r   c                     g S r   r)   r   s    r   r   zPostgresIndex.get_with_params(   s    	r   ) )	__name__
__module____qualname__r   r   r   r   r   __classcell__r'   s   @r   r   r      s&    L Lr   r   c                   :     e Zd ZdZddd fd
Z fdZd Z xZS )r   bloomNr)   )lengthcolumnsc                   t        |   |i | t        | j                        dkD  rt	        d      t        |t        t        f      st	        d      t        |      t        | j                        kD  rt	        d      t        d |D              st	        d      |"d|cxk  rdk  st	        d	       t	        d	      || _	        || _
        y )
N    z-Bloom indexes support a maximum of 32 fields.z+BloomIndex.columns must be a list or tuple.z7BloomIndex.columns cannot have more values than fields.c              3   <   K   | ]  }d |cxk  xr dk  nc   yw)r   i  Nr)   ).0cols     r   	<genexpr>z&BloomIndex.__init__.<locals>.<genexpr>7   s     6s1s?d??6s   z8BloomIndex.columns must contain integers from 1 to 4095.r   i   z<BloomIndex.length must be None or an integer from 1 to 4096.)r   __init__r   fields
ValueError
isinstancelisttupleallr3   r4   )r   r3   r4   expressionsr$   r'   s        r   r;   zBloomIndex.__init__/   s    +00t{{b LMM'D%=1JKKw<#dkk**VWW6g66J  a&&8D&8N  '9N  r   c                     t         |          \  }}}| j                  | j                  |d<   | j                  r| j                  |d<   |||fS )Nr3   r4   )r   deconstructr3   r4   r   pathargsr$   r'   s       r   rD   zBloomIndex.deconstructB   sQ    "W02dF;;"#{{F8<< $F9T6!!r   c                     g }| j                   |j                  d| j                   z         | j                  r-|j                  d t	        | j                  d      D               |S )Nzlength = %dc              3   0   K   | ]  \  }}d ||fz    yw)z
col%d = %dNr)   )r8   ivs      r   r:   z-BloomIndex.get_with_params.<locals>.<genexpr>O   s"      *.!Q1v%s      )start)r3   appendr4   extend	enumerater   r&   s     r   r   zBloomIndex.get_with_paramsJ   s^    ;;"}t{{:;<< 2;DLLPQ2R  r   r,   r-   r.   r   r;   rD   r   r/   r0   s   @r   r   r   ,   s    F,0" &"r   r   c                   :     e Zd ZdZddd fd
Z fdZd Z xZS )r   brinN)autosummarizepages_per_rangec                d    ||dk  rt        d      || _        || _        t        |   |i | y )Nr   z2pages_per_range must be None or a positive integer)r=   rU   rV   r   r;   )r   rU   rV   rB   r$   r'   s        r   r;   zBrinIndex.__init__X   s@     &?a+?QRR*.+00r   c                     t         |          \  }}}| j                  | j                  |d<   | j                  | j                  |d<   |||fS )NrU   rV   )r   rD   rU   rV   rE   s       r   rD   zBrinIndex.deconstructa   s]    "W02dF)&*&8&8F?#+(,(<(<F$%T6!!r   c                     g }| j                   "|j                  d| j                   rdndz         | j                  |j                  d| j                  z         |S )Nzautosummarize = %sonoffzpages_per_range = %d)rU   rN   rV   rQ   s     r   r   zBrinIndex.get_with_paramsi   sa    )$0B0BN +58L8LLMr   rR   r0   s   @r   r   r   U   s    F +/1"r   r   c                   :     e Zd ZdZddd fd
Z fdZd Z xZS )r   btreeN)
fillfactordeduplicate_itemsc                @    || _         || _        t        |   |i | y r   )r^   r_   r   r;   )r   r^   r_   rB   r$   r'   s        r   r;   zBTreeIndex.__init__w   s$    $!2+00r   c                     t         |          \  }}}| j                  | j                  |d<   | j                  | j                  |d<   |||fS )Nr^   r_   )r   rD   r^   r_   rE   s       r   rD   zBTreeIndex.deconstruct|   sY    "W02dF??&#'??F< !!-*.*@*@F&'T6!!r   c                     g }| j                   |j                  d| j                   z         | j                  "|j                  d| j                  rdndz         |S )Nfillfactor = %dzdeduplicate_items = %srZ   r[   )r^   rN   r_   rQ   s     r   r   zBTreeIndex.get_with_params   s^    ??&04??BC!!-(D4J4JDPUV r   rR   r0   s   @r   r   r   t   s    F04 1
"r   r   c                   :     e Zd ZdZddd fd
Z fdZd Z xZS )r	   ginN)
fastupdategin_pending_list_limitc                @    || _         || _        t        |   |i | y r   )rf   rg   r   r;   )r   rf   rg   rB   r$   r'   s        r   r;   zGinIndex.__init__   s&     %&<#+00r   c                     t         |          \  }}}| j                  | j                  |d<   | j                  | j                  |d<   |||fS )Nrf   rg   )r   rD   rf   rg   rE   s       r   rD   zGinIndex.deconstruct   sY    "W02dF??&#'??F< &&2/3/J/JF+,T6!!r   c                     g }| j                   |j                  d| j                   z         | j                  "|j                  d| j                  rdndz         |S )Nzgin_pending_list_limit = %dzfastupdate = %srZ   r[   )rg   rN   rf   rQ   s     r   r   zGinIndex.get_with_params   s^    &&2-0K0KK ??&0DOODQVWXr   rR   r0   s   @r   r	   r	      s    F (,D1"r   r	   c                   :     e Zd ZdZddd fd
Z fdZd Z xZS )r
   gistN)	bufferingr^   c                @    || _         || _        t        |   |i | y r   )rm   r^   r   r;   )r   rm   r^   rB   r$   r'   s        r   r;   zGistIndex.__init__   s#    "$+00r   c                     t         |          \  }}}| j                  | j                  |d<   | j                  | j                  |d<   |||fS )Nrm   r^   )r   rD   rm   r^   rE   s       r   rD   zGistIndex.deconstruct   sT    "W02dF>>%"&..F;??&#'??F< T6!!r   c                     g }| j                   "|j                  d| j                   rdndz         | j                  |j                  d| j                  z         |S )Nzbuffering = %srZ   r[   rc   )rm   rN   r^   rQ   s     r   r   zGistIndex.get_with_params   sU    >>%/4>>4uUV??&04??BCr   rR   r0   s   @r   r
   r
      s    F/3 1
"r   r
   c                   8     e Zd ZdZdd fd
Z fdZd Z xZS )r   hashNr^   c                2    || _         t        |   |i | y r   r^   r   r;   r   r^   rB   r$   r'   s       r   r;   zHashIndex.__init__       $+00r   c                 h    t         |          \  }}}| j                  | j                  |d<   |||fS Nr^   r   rD   r^   rE   s       r   rD   zHashIndex.deconstruct   <    "W02dF??&#'??F< T6!!r   c                 ^    g }| j                   |j                  d| j                   z         |S Nrc   r^   rN   rQ   s     r   r   zHashIndex.get_with_params   /    ??&04??BCr   rR   r0   s   @r   r   r      s    F04 1"r   r   c                   8     e Zd ZdZdd fd
Z fdZd Z xZS )r   spgistNrs   c                2    || _         t        |   |i | y r   ru   rv   s       r   r;   zSpGistIndex.__init__   rw   r   c                 h    t         |          \  }}}| j                  | j                  |d<   |||fS ry   rz   rE   s       r   rD   zSpGistIndex.deconstruct   r{   r   c                 ^    g }| j                   |j                  d| j                   z         |S r}   r~   rQ   s     r   r   zSpGistIndex.get_with_params   r   r   rR   r0   s   @r   r   r      s    F04 1"r   r   c                   &     e Zd ZdZdZ fdZ xZS )OpClassz%(expressions)s %(name)sFc                 (    t         |   ||       y )N)name)r   r;   )r   
expressionr   r'   s      r   r;   zOpClass.__init__   s    $/r   )r,   r-   r.   template constraint_validation_compatibler;   r/   r0   s   @r   r   r      s    )H',$0 0r   r   N)django.db.modelsr   r   django.utils.functionalr   __all__r   r   r   r   r	   r
   r   r   r   r)   r   r   <module>r      s    ( 3E :& &R > 6} : 2 (- (0d 0r   