�
���g� � � � d dl mZ d dlmZmZmZ d dlmZ d dlm Z d dl
mZmZm
Z
mZmZmZmZmZmZmZ d dlmZmZmZ G d� de� � Zd S )
� )�abstractmethod)�Optional�Sequence�Tuple)�UUID)�CollectionConfigurationInternal)
�
Collection�CollectionAndSegments�Database�Tenant�Metadata�Segment�SegmentScope�OptionalArgument�Unspecified�UpdateMetadata)�DEFAULT_DATABASE�DEFAULT_TENANT� Componentc �
� e Zd ZdZeefdedededdfd�� � Zeefdedede fd�� � Z
eefdededdfd �� � Zeddefd
ee
dee
dedee fd�� � Zededdfd
�� � Zededefd�� � Zededdfd�� � Zedededdfd�� � Ze d$dedee dee dee dee f
d�� � Ze e� � fdededeee ddfd�� � Zedddeefdedededee dee dee
dededede e!ef fd�� � Z"eeefdedededdfd�� � Z#eddeeddfdee dee deded
ee
dee
dee! fd �� � Z$ed!ede%fd"�� � Z&e e� � e� � e� � fdedee deee
deee ddf
d#�� � Z'dS )%�SysDBz+Data interface for Chroma's System database�id�name�tenant�returnNc � � dS )zeCreate a new database in the System database. Raises an Error if the Database
already exists.N� )�selfr r r s �b/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/chromadb/db/system.py�create_databasezSysDB.create_database s � �
�� c � � dS )zZGet a database by name and tenant. Raises an Error if the Database does not
exist.Nr �r r r s r �get_databasezSysDB.get_database � � �
�r! c � � dS )zDelete a database.Nr r# s r �delete_databasezSysDB.delete_database% � � �
�r! �limit�offsetc � � dS )z List all databases for a tenant.Nr )r r) r* r s r �list_databaseszSysDB.list_databases* s � �
�r! c � � dS )zzCreate a new tenant in the System database. The name must be unique.
Raises an Error if the Tenant already exists.Nr �r r s r �
create_tenantzSysDB.create_tenant4 r% r! c � � dS )zCGet a tenant by name. Raises an Error if the Tenant does not exist.Nr r. s r �
get_tenantzSysDB.get_tenant: r( r! �segmentc � � dS )z^Create a new segment in the System database. Raises an Error if the ID
already exists.Nr )r r2 s r �create_segmentzSysDB.create_segmentA r% r! �
collectionc � � dS )z*Delete a segment from the System database.Nr )r r5 r s r �delete_segmentzSysDB.delete_segmentG r( r! �type�scopec � � dS )z/Find segments by id, type, scope or collection.Nr )r r5 r r8 r9 s r �get_segmentszSysDB.get_segmentsL � � �
�r! �metadatac � � dS )z�Update a segment. Unspecified fields will be left unchanged. For the
metadata, keys with None values will be removed and keys not present in the
UpdateMetadata dict will be left unchanged.Nr )r r5 r r= s r �update_segmentzSysDB.update_segmentW s � �
�r! F�
configuration�segments� dimension�
get_or_create�databasec
� � dS )a� Create a new collection and associated resources
in the SysDB. If get_or_create is True, the
collection will be created if one with the same name does not exist.
The metadata will be updated using the same protocol as update_collection. If get_or_create
is False and the collection already exists, an error will be raised.
Returns a tuple of the created collection and a boolean indicating whether the
collection was created or not.
Nr )
r r r r@ rA r= rB rC r rD s
r �create_collectionzSysDB.create_collectionc s � �,
�r! c � � dS )z�Delete a collection, all associated segments and any associate resources (log stream)
from the SysDB and the system at large.Nr )r r r rD s r �delete_collectionzSysDB.delete_collection{ r<