� =��g�#����ddlZddlZddlZddlTddlmZddlmZddlmZddlmZddlmZddlm Z dd lm Z dd lm Z dd l m Z  dd lmZdd lmZddlmZeZn#e$r dxZxZxZZYnwxYwejddkreZdZdZGd�de��ZGd�de��ZGd�de��ZGd�de��Z Gd�de��Z! dd�Z"Gd�de e ��Z#dS) �N)�*)�_atomic)�_manual)�ColumnMetadata)�EnclosedNodeList)�Entity)�ForeignKeyMetadata)� IndexMetadata)�NodeList)�_PooledPostgresqlDatabase)� ArrayField)�BinaryJSONField)� IntervalField�i� aCockroachDB does not support nested transactions. You may alternatively use the @transaction context-manager/decorator, which only wraps the outer-most block in transactional logic. To run a transaction with automatic retries, use the run_transaction() helper.c��eZdZdS)�ExceededMaxAttemptsN��__name__� __module__� __qualname__���e/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/playhouse/cockroachdb.pyrr#s�������rrc�"��eZdZdZ�fd�Z�xZS)� UUIDKeyFieldTc���|�d��rtdt|��z���td��g|d<|�dd��t t |��j|i|��dS)N� constraints�%s cannot specify constraints.zDEFAULT gen_random_uuid()� primary_keyT)�get� ValueError�type�SQL� setdefault�superr�__init__��self�args�kwargs� __class__s �rr&zUUIDKeyField.__init__)s���� �:�:�m� $� $� L��=��T� � �J�K�K� K�!$�%@�!A�!A� B��}�����-��.�.�.�*��l�D�!�!�*�D�;�F�;�;�;�;�;r)rrr�auto_incrementr&� __classcell__�r+s@rrr&s=��������N�<�<�<�<�<�<�<�<�<rrc�"��eZdZdZ�fd�Z�xZS)� RowIDField�INTc����|�d��rtdt|��z���td��g|d<t t |��j|i|��dS)NrrzDEFAULT unique_rowid())r r!r"r#r%r0r&r's �rr&zRowIDField.__init__4sp��� �:�:�m� $� $� L��=��T� � �J�K�K� K�!$�%=�!>�!>� ?��}��(��j�$���(�$�9�&�9�9�9�9�9r)rrr� field_typer&r-r.s@rr0r01s=��������J�:�:�:�:�:�:�:�:�:rr0c����eZdZej���Ze�ddi��dZ�fd�Z�fd�Z dd�Z d�fd� Z d �Z �fd �Z d �Zd �Zd�fd � Zd�fd� Z�fd�Z dd�Z dd�Z�xZS)�CockroachDatabase�BLOB�BYTESTc����d|vrC|rA|�d��s,|�dd��|�dd��tt|��j|g|�Ri|��dS)N�dsnz postgresql://�user�root�porti�f)� startswithr$r%r5r&)r(�databaser)r*r+s �rr&zCockroachDatabase.__init__Cs���� �� � �H� �(0�(;�(;�O�(L�(L� � � � �f�f� -� -� -� � � �f�e� ,� ,� ,�/����&�&�/��J�4�J�J�J�6�J�J�J�J�Jrc���|���}|�d��|���\}tjd|��}|�Ddt d�|���D����z}t|��|_dStt|��� |��dS)Nzselect version()z#^CockroachDB.+?v(\d+)\.(\d+)\.(\d+)z %d%02d%02dc3�4K�|]}t|��V��dS�N)�int)�.0�is r� <genexpr>z8CockroachDatabase._set_server_version.<locals>.<genexpr>Rs(����(L�(L�A��Q���(L�(L�(L�(L�(L�(Lr) �cursor�execute�fetchone�re�match�tuple�groupsrB�server_versionr%r5�_set_server_version)r(�conn�curs�raw� match_obj�cleanr+s �rrNz%CockroachDatabase._set_server_versionLs�����{�{�}�}�� � � �'�(�(�(��}�}������H�C�S�I�I� � � � �5�(L�(L��9I�9I�9K�9K�(L�(L�(L�#L�#L�L�E�"%�e�*�*�D� � � � �#�T� *� *� >� >�t� D� D� D� D� DrNc�|�d}|�|||pddf��}|���}|r|dpdS)Nz�SELECT constraint_name FROM information_schema.table_constraints WHERE table_name = %s AND table_schema = %s AND constraint_type = %s�publicz PRIMARY KEYr)� execute_sqlrH)r(�table�schema�queryrF�rows r�_get_pk_constraintz$CockroachDatabase._get_pk_constraintXsU��,���!�!�%�%��1C�8�*7�*9�:�:���o�o�����~�s�1�v�%��%rc����tt|���||��}|�||����fd�|D��S)Nc�.��g|]}�r |j�k�|��Sr)�name)rC�idx�pkcs �r� <listcomp>z1CockroachDatabase.get_indexes.<locals>.<listcomp>gs%���I�I�I��s�I���C������r)r%r5� get_indexesr[)r(rWrX�indexesr`r+s @�rrbzCockroachDatabase.get_indexesbsU�����)�4�0�0�<�<�U�F�K�K���%�%�e�V�4�4��I�I�I�I�w�I�I�I�Irc��|jsdS|j���}|dvrtd��S|dvrtd���dS)N��replace�upsert�UPSERT)�ignore�nothing�updatezfUn-supported action for conflict resolution. CockroachDB supports REPLACE (UPSERT), IGNORE and UPDATE.)�_action�lowerr#r!)r(� on_conflictrY�actions r�conflict_statementz$CockroachDatabase.conflict_statementisf���"�*�F�F��$�*�*�,�,�� �*� *� *��x�=�=� � �:� :� :��+�,�,� ,�;� :rc����|jr|j���nd}|dvrytd��g}|jr1|�t d�|jD������|�td����t |��S|dvrdS|jrtd���tt|��� ||��S)N�)rirjz ON CONFLICTc�Z�g|](}t|t��rt|��n|��)Sr)� isinstance� basestringr)rC�cols rraz5CockroachDatabase.conflict_update.<locals>.<listcomp>ysA��/4�/4�/4��$.�c�:�#>�#>�G�F�3�K�K�K�C�/4�/4�/4rz DO NOTHINGrezWCockroachDB does not support the usage of a constraint name. Use the column(s) instead.) rlrmr#�_conflict_target�appendrr �_conflict_constraintr!r%r5�conflict_update)r(�ocrYro�partsr+s �rrzz!CockroachDatabase.conflict_updatets���')�z�9���!�!�#�#�#�r�� �*� *� *���'�'�(�E��"� 6�� � �-�/4�/4�!�2�/4�/4�/4�5�5�6�6�6� �L�L��\�*�*� +� +� +��E�?�?� "� �,� ,� ,� �F� � $� L��K�L�L� L��&��-�-�=�=�b�%�H�H�Hrc�8�t�||��SrA)�fn�extract)r(� date_part� date_fields r� extract_datezCockroachDatabase.extract_date�s���z�z�)�Z�0�0�0rc�R�|�d���d��S)NrB� timestamptz)�cast)r(r�s r�from_timestampz CockroachDatabase.from_timestamp�s$�����u�%�%�*�*�=�9�9�9rc�V��tt|�����|�)|����d|f��|�S|���}|dvrt d���|����d|z��dSdS)Nz$SET TRANSACTION AS OF SYSTEM TIME %s)�low�normal�highz$priority must be low, normal or highzSET TRANSACTION PRIORITY %s)r%r5�beginrFrGrmr!�r(� system_time�priorityr+s �rr�zCockroachDatabase.begin�s���� ���&�&�,�,�.�.�.� � "� �K�K�M�M� !� !�"H�#.�.� 2� 2� 2� � ��~�~�'�'�H��8�8�8� �!G�H�H�H� �K�K�M�M� !� !�"?�(�"J� K� K� K� K� K� � rc����|���r|���|jtkrt |||��St t |���||��SrA)� is_closed�connectrM�NESTED_TX_MIN_VERSION� _crdb_atomicr%r5�atomicr�s �rr�zCockroachDatabase.atomic�sa��� �>�>� � �+�T�\�\�^�^�^� � �!6� 6� 6���k�8�<�<� <��&��-�-�4�4�[�(�K�K�Krc����|���r|���|jtkrt t ���t t|�����SrA) r�r�rMr��NotImplementedError� TXN_ERR_MSGr%r5� savepoint�r(r+s �rr�zCockroachDatabase.savepoint�sY��� �>�>� � �+�T�\�\�^�^�^� � �!6� 6� 6�%�k�2�2� 2��&��-�-�7�7�9�9�9rc����������fd�}|S)Nc�P���tj��������fd���}|S)Nc�*��t�������SrA��run_transaction)�cb� max_attemptsr�r(r�s�����r�new_fnzACockroachDatabase.retry_transaction.<locals>.deco.<locals>.new_fn�s ���&�t�R��{�'/�1�1�1r)� functools�wraps)r�r�r�r�r(r�s` ����r�decoz1CockroachDatabase.retry_transaction.<locals>.deco�sM���� �_�R� � � 1� 1� 1� 1� 1� 1� 1� 1�!� � 1��Mrr)r(r�r�r�r�s```` r�retry_transactionz#CockroachDatabase.retry_transaction�s5������ � � � � � � � � � rc�(�t|||||��SrAr�)r(r�r�r�r�s rr�z!CockroachDatabase.run_transaction�s���t�R��{�H�M�M�MrrA)NN�NNN)rrr�PostgresqlDatabase� field_types�copyrk�release_after_rollbackr&rNr[rbrprzr�r�r�r�r�r�r�r-r.s@rr5r5;s��������$�0�5�5�7�7�K����������"��K�K�K�K�K� E� E� E� E� E�&�&�&�&�J�J�J�J�J�J� ,� ,� ,�I�I�I�I�I�(1�1�1�:�:�:� L� L� L� L� L� L�L�L�L�L�L�L� :�:�:�:�:� @D�#'�����BF�!%�N�N�N�N�N�N�N�Nrr5c���eZdZ�fd�Z�xZS)r�c� ��|j���dkr@t|j���t��st t ���tt|��� ��S)Nr) �db�transaction_depthrt�top_transactionrr�r�r%r�� __enter__r�s �rr�z_crdb_atomic.__enter__�sf��� �7� $� $� &� &�� *� *��d�g�5�5�7�7��A�A� 7�)�+�6�6�6��\�4�(�(�2�2�4�4�4r)rrrr�r-r.s@rr�r��s8�������5�5�5�5�5�5�5�5�5rr�c��|pd}|�||���5}|�d��|dkrq ||��}|�d��|cddd��S#t$r5}|jjdkr|dz}|�d ��Yd}~�n�d}~wwxYw ddd��n #1swxYwYt dd ���) a Run transactional SQL in a transaction with automatic retries. User-provided `callback`: * Must accept one parameter, the `db` instance representing the connection the transaction is running under. * Must not attempt to commit, rollback or otherwise manage transactions. * May be called more than once. * Should ideally only contain SQL operations. Additionally, the database must not have any open transaction at the time this function is called, as CRDB does not support nested transactions. �����)r�r�zSAVEPOINT cockroach_restartrz#RELEASE SAVEPOINT cockroach_restartN�40001�z'ROLLBACK TO SAVEPOINT cockroach_restartzunable to commit transaction)r�rV�OperationalError�orig�pgcoder)r��callbackr�r�r��txn�result�excs rr�r��sW�� �%�2�L� ���{�X�� >� >� �#� ���4�5�5�5��a��� �!��"�������D�E�E�E�� � � � � � � � ��$� � � ��8�?�g�-�-� �A�%�L��N�N�#L�M�M�M��H�H�H�H������  ����  � � � � � � � � � � � ���� � � � � �d�$B� C� C�Cs:�B6�!A'�' B&�1*B!�B6� B!�!B&�&B6�6B:�=B:c��eZdZdS)�PooledCockroachDatabaseNrrrrr�r��s�������Drr�r�)$r�rI�sys�peeweerrrrrr r r �playhouse.poolr �playhouse.postgres_extr rr� JSONField� ImportError� version_info�strrur�r�r�r� UUIDFieldr� AutoFieldr0r�r5r�r�r�rrr�<module>r�s������� � � � � � � � �����������������!�!�!�!�!�!�#�#�#�#�#�#�������%�%�%�%�%�%� � � � � � �������4�4�4�4�4�4�D�1�1�1�1�1�1�6�6�6�6�6�6�4�4�4�4�4�4��I�I���D�D�D�?C�C�J�C��C�=�9�9�9�D������A������J���+� � 2�1�1�1�1�*�1�1�1�<�<�<�<�<�9�<�<�<�:�:�:�:�:��:�:�:�xN�xN�xN�xN�xN�*�xN�xN�xN�v5�5�5�5�5�7�5�5�5�BF�!�D�D�D�D�@ � � � � �7�9J� � � � � s�A� A-�,A-
Memory