
    ug)                         d dl Z d dlmZ d dlmZ d dlmZ d dlmZm	Z	 dZ
dedeeeef   fd	Zd
edededefdZdededdfdZy)    N)Tuple)UUID)SqlDB)SegmentManagerVectorReaderz?persistent:\/\/(?P<tenant>.+)\/(?P<namespace>.+)\/(?P<topic>.+)
topic_namereturnc                     t        j                  t        |       }|st        d|        |j	                  d      |j	                  d      |j	                  d      fS )z>Parse the topic name into the tenant, namespace and topic namezInvalid topic name: tenant	namespacetopic)rematchtopic_regex
ValueErrorgroup)r   r   s     O/var/www/openai/venv/lib/python3.12/site-packages/chromadb/ingest/impl/utils.pyparse_topic_namer      sP    HH[*-E/
|<==;;x %++k":EKK<PPP    r   r   collection_idc                 *    d|  d| dt        |       S )Nzpersistent:///)str)r   r   r   s      r   create_topic_namer      s!    6(!I;aM0B/CDDr   dbsegment_managerc                 $   | j                         5 }|j                  d       |j                         D cg c]  }|d   	 }}ddd       t              dk(  ry|D ]!  }|j	                  t        |      t               # yc c}w # 1 sw Y   DxY w)uM  
    Trigger the migration of vector segments' max_seq_id from the pickled metadata file to SQLite.

    Vector segments migrate this field automatically on init—so this should be used when we know segments are likely unmigrated and unloaded.

    This is a no-op if all vector segments have already migrated their max_seq_id.
    z
            SELECT collection
            FROM "segments"
            WHERE "id" NOT IN (SELECT "segment_id" FROM "max_seq_id") AND
                  "type" = 'urn:chroma:segment/vector/hnsw-local-persisted'
        r   N)txexecutefetchalllenget_segmentr   r   )r   r   currow'collection_ids_with_unmigrated_segmentsr   s         r   ,trigger_vector_segments_max_seq_id_migrationr&      s     
C	
 FI\\^2T^c3q6^/2T 
 23q8@##D$7F A 3U 
s   $BBBBB)r   typingr   uuidr   chromadb.db.baser   chromadb.segmentr   r   r   r   r   r   r&    r   r   <module>r,      s    	   " 9PQ QsC})= QEc Ec E$ E3 EGG .G	Gr   