
    i
                        d Z ddlmZ ddlZddlmZmZ ddlmZ	 ddl
mZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ erddlmZ  G d d      Z G d deee         Z G d deee         Z G d de      Zy)z#
CockroachDB-specific connections.
    )annotationsN)TYPE_CHECKINGAny   )errors)Row   )adapters)
Connection)AdaptersMap)ConnectionInfo)AsyncConnection)PGconnc                  `    e Zd ZU ded<   ded<   ed
d       Zedd       Zedd       ZddZ	y	)_CrdbConnectionMixinzAdaptersMap | None	_adaptersr   pgconnc                z    t        |t        t        f      r|j                  }t	        |j                  d            S )zS
        Return `!True` if the server connected to `!conn` is CockroachDB.
        s   crdb_version)
isinstancer   r   r   boolparameter_status)clsconns     w/var/www/html/hwPaymentPortal-be-dev/hw-payment-portal-api/venv/lib/python3.12/site-packages/psycopg/crdb/connection.pyis_crdbz_CrdbConnectionMixin.is_crdb   s2    
 dZ9:;;DD))/:;;    c                Z    | j                   st        t              | _         | j                   S N)r   r   r
   selfs    r   r
   z_CrdbConnectionMixin.adapters&   s    ~~(2DN~~r   c                ,    t        | j                        S r   )CrdbConnectionInfor   r   s    r   infoz_CrdbConnectionMixin.info.   s    !$++..r   c                d    | j                  | j                        rt        j                  d      y )Nz/CockroachDB doesn't support prepared statements)r   r   eNotSupportedErrorr   s    r   
_check_tpcz_CrdbConnectionMixin._check_tpc2   s)    <<$%%&WXX %r   N)r   z/Connection[Any] | AsyncConnection[Any] | PGconnreturnr   )r(   r   )r(   r"   )r(   None)
__name__
__module____qualname____annotations__classmethodr   propertyr
   r#   r'    r   r   r   r      sM    !!N< <   / /Yr   r   c                      e Zd ZdZdZy)CrdbConnectionz=
    Wrapper for a connection to a CockroachDB database.
    psycopg.crdbNr*   r+   r,   __doc__r0   r   r   r2   r2   7         Jr   r2   c                      e Zd ZdZdZy)AsyncCrdbConnectionzD
    Wrapper for an async connection to a CockroachDB database.
    r3   Nr4   r0   r   r   r8   r8   ?   r6   r   r8   c                  J    e Zd ZdZdZedd       Zedd       Zed	d       Zy)
r"   zV
    `~psycopg.ConnectionInfo` subclass to get info about a CockroachDB database.
    r3   c                     y)NCockroachDBr0   r   s    r   vendorzCrdbConnectionInfo.vendorN   s    r   c                    | j                  d      x}st        j                  d      | j                  |      x}t        j                  d|      |S )z
        Return the CockroachDB server version connected.

        Return a number in the PostgreSQL format (e.g. 21.2.10 -> 210210).
        crdb_versionz''crdb_version' parameter status not setz)couldn't parse CockroachDB version from: )r   r%   InternalErrorparse_crdb_versionInterfaceError)r    sververs      r   server_versionz!CrdbConnectionInfo.server_versionR   s^     --n===//"KLL**400C9""%Nth#WXX
r   c                    t        j                  d|      x}sy t        |j                  d            dz  t        |j                  d            dz  z   t        |j                  d            z   S )Nz\bv(\d+)\.(\d+)\.(\d+)r	   i'  r   d      )researchintgroup)r    rB   ms      r   r@   z%CrdbConnectionInfo.parse_crdb_versiona   sZ    YY8$???1771:&QWWQZ3)>>QWWQZPPr   N)r(   str)r(   rJ   )rB   rM   r(   z
int | None)	r*   r+   r,   r5   r/   r<   rD   r.   r@   r0   r   r   r"   r"   G   sJ      J    Q Qr   r"   )r5   
__future__r   rH   typingr   r    r   r%   rowsr   _typesr
   
connectionr   _adapters_mapr   _connection_infor   connection_asyncr   pq.abcr   r   r2   r8   r"   r0   r   r   <module>rX      sq    # 	 %    # ' - .Y Y> ):c?   .0D  Q Qr   