o
    É­Rh÷  ã                   @   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	m
Z
 d dlmZ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)ÚCreateCollectionConfigurationÚUpdateCollectionConfiguration)
Ú
CollectionÚCollectionAndSegmentsÚ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efdededdfdd„ƒZeddefdee dee dede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eddfdd„ƒZe			d7dedee dee dee dee f
dd„ƒZeeƒ fded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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dfded'ee defd.d/„ƒZ%ed0ede&fd1d2„ƒZ'eeƒ eƒ eƒ eƒ fdedee d%eee  deee  d#eee(  ddfd3d4„ƒZ)ededefd5d6„ƒZ*dS )8Ú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   úT/home/air/sanwanet/backup_V2/venv/lib/python3.10/site-packages/chromadb/db/system.pyÚcreate_database   s   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   )zDelete a database.Nr   r    r   r   r   Údelete_database(   ó   zSysDB.delete_databaseÚlimitÚoffsetc                 C   r   )z List all databases for a tenant.Nr   )r   r%   r&   r   r   r   r   Úlist_databases-   s   zSysDB.list_databasesc                 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_tenant7   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=   r$   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_segmentD   r"   zSysDB.create_segmentÚ
collectionc                 C   r   )z*Delete a segment from the System database.Nr   )r   r-   r   r   r   r   Údelete_segmentJ   r$   zSysDB.delete_segmentÚtypeÚscopec                 C   r   )z/Find segments by id, type, scope or collection.Nr   )r   r-   r   r/   r0   r   r   r   Úget_segmentsO   ó   	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   r3   r   r   r   Úupdate_segmentZ   s   
zSysDB.update_segmentFÚconfigurationÚsegmentsÚ	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   r5   r6   r3   r7   r8   r   r9   r   r   r   Úcreate_collectionf   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   r9   r   r   r   Údelete_collection~   r2   zSysDB.delete_collectionc                 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   r9   r%   r&   r   r   r   Úget_collections‰   s   zSysDB.get_collectionsc                 C   r   )zFGets the number of collections for the (tenant, database) combination.Nr   )r   r   r9   r   r   r   Úcount_collections–   ó   zSysDB.count_collectionsÚcollection_idc                 C   r   )z®Get a consistent snapshot of a collection by id. This will return a collection with segment
        information that matches the collection version and log position.
        Nr   )r   r?   r   r   r   Úget_collection_with_segmentsŸ   r>   z"SysDB.get_collection_with_segmentsc                 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   r7   r3   r5   r   r   r   Úupdate_collection¨   s   zSysDB.update_collectionc                 C   r   )z.Returns the number of records in a collection.Nr   )r   r   r   r   r   Úget_collection_size¸   r$   zSysDB.get_collection_size)NNN)+Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   Ústrr   r   r!   r#   r   Úintr   r'   r)   r   r*   r   r,   r.   r   r1   r   r   r   r4   r   r   r   Úboolr   r	   r:   r;   r<   r=   r
   r@   r   rA   rB   r   r   r   r   r      sF   ÿÿÿÿþüþýüû	ûþýüûú
üþý
üûöþýüûúùø	÷
ö
õüþýüû
ùþýüûúùøýþýüÿþøþý
ü
ûÿú	÷r   N)Úabcr   Útypingr   r   r   Úuuidr   Ú%chromadb.api.collection_configurationr   r   Úchromadb.typesr	   r
   r   r   r   r   r   r   r   r   Úchromadb.configr   r   r   r   r   r   r   r   Ú<module>   s    0