o
    1Xxi@  ã                   @   sŒ   d dl mZ d dlmZmZmZ d dlmZ d dlm	Z	 d dl
mZmZmZmZmZmZmZmZmZ d dlmZmZmZ G dd„ deƒZd	S )
é    )Úabstractmethod)ÚOptionalÚSequenceÚTuple)ÚUUID)ÚCollectionConfigurationInternal)	Ú
CollectionÚDatabaseÚTenantÚMetadataÚSegmentÚSegmentScopeÚOptionalArgumentÚUnspecifiedÚUpdateMetadata)ÚDEFAULT_DATABASEÚDEFAULT_TENANTÚ	Componentc                   @   s"  e Zd ZdZeefdedededdfdd„ƒZeefdedede	fd	d
„ƒZ
ededdfdd„ƒZededefdd„ƒZededdfdd„ƒZededdfdd„ƒZe				d+dee dee dee dee dee f
dd„ƒZeeƒ eƒ fdedeee  deee  ddfdd„ƒZedddeefdedededee dee deded edeeef fd!d"„ƒZ eeefdeded eddfd#d$„ƒZ!eddeeddfdee dee ded ed%ee d&ee dee fd'd(„ƒZ"eeƒ eƒ eƒ fdedee deee  deee  ddf
d)d*„ƒZ#dS ),ÚSysDBz+Data interface for Chroma's System databaseÚidÚnameÚtenantÚreturnNc                 C   ó   dS )zeCreate a new database in the System database. Raises an Error if the Database
        already exists.N© )Úselfr   r   r   r   r   úQ/home/air/biblejyuku/back/venv/lib/python3.10/site-packages/chromadb/db/system.pyÚcreate_database   ó   zSysDB.create_databasec                 C   r   )zZGet a database by name and tenant. Raises an Error if the Database does not
        exist.Nr   )r   r   r   r   r   r   Úget_database   ó   zSysDB.get_databasec                 C   r   )zzCreate a new tenant in the System database. The name must be unique.
        Raises an Error if the Tenant already exists.Nr   ©r   r   r   r   r   Úcreate_tenant$   r    zSysDB.create_tenantc                 C   r   )zCGet a tenant by name. Raises an Error if the Tenant does not exist.Nr   r!   r   r   r   Ú
get_tenant*   ó   zSysDB.get_tenantÚsegmentc                 C   r   )z^Create a new segment in the System database. Raises an Error if the ID
        already exists.Nr   )r   r%   r   r   r   Úcreate_segment/   r    zSysDB.create_segmentc                 C   r   )z,Create a new segment in the System database.Nr   )r   r   r   r   r   Údelete_segment5   r$   zSysDB.delete_segmentÚtypeÚscopeÚ
collectionc                 C   r   )z/Find segments by id, type, scope or collection.Nr   )r   r   r(   r)   r*   r   r   r   Úget_segments:   s   	zSysDB.get_segmentsÚmetadatac                 C   r   )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   r   r*   r,   r   r   r   Úupdate_segmentE   s   
zSysDB.update_segmentFÚconfigurationÚ	dimensionÚget_or_createÚdatabasec	           	      C   r   )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.   r,   r/   r0   r   r1   r   r   r   Úcreate_collectionQ   s   zSysDB.create_collectionc                 C   r   )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   r1   r   r   r   Údelete_collectionh   r   zSysDB.delete_collectionÚlimitÚoffsetc                 C   r   )z_Find collections by id or name. If name is provided, tenant and database must also be provided.Nr   )r   r   r   r   r1   r4   r5   r   r   r   Úget_collectionsp   ó   zSysDB.get_collectionsc                 C   r   )zËUpdate a collection. Unspecified fields will be left unchanged. For metadata,
        keys with None values will be removed and keys not present in the UpdateMetadata
        dict will be left unchanged.Nr   )r   r   r   r/   r,   r   r   r   Úupdate_collection}   r7   zSysDB.update_collection)NNNN)$Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   Ústrr   r	   r   r"   r
   r#   r   r&   r'   r   r   r   r+   r   r   r   r-   r   r   r   ÚintÚboolr   r   r2   r3   r6   r8   r   r   r   r   r      sø    ÿÿÿÿþûþýüûú
üþ
ý
üû÷þýüûúùø	÷

öÿÿÿÿþùþýüûúùøûþý
ü
ûúr   N)Úabcr   Útypingr   r   r   Úuuidr   Úchromadb.api.configurationr   Úchromadb.typesr   r	   r
   r   r   r   r   r   r   Úchromadb.configr   r   r   r   r   r   r   r   Ú<module>   s    ,