
    q9i[                        d dl Z d dlZd dlmZmZmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZmZ d dlmZ d dlmZ d dlmZmZmZ d d	lmZ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( d dl)m*Z* d dl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA  e j                  eC      ZD G d dee       ZEy)    N)OptionalSequenceAnyTuplecastDictUnionSet)UUID)override)TableColumn)groupby)Schema)DEFAULT_DATABASEDEFAULT_TENANTSystem)CursorSqlDBParameterValueget_sql)SysDB)NotFoundErrorUniqueConstraintError)add_attributes_to_current_spanOpenTelemetryClientOpenTelemetryGranularitytrace_method)Producer)
CollectionAndSegmentsDatabaseOptionalArgumentSegmentMetadata
CollectionSegmentScopeTenantUnspecifiedUpdateMetadata)CreateCollectionConfigurationUpdateCollectionConfiguration+create_collection_configuration_to_json_str+load_collection_configuration_from_json_strCollectionConfiguration'create_collection_configuration_to_json collection_configuration_to_json$collection_configuration_to_json_str"overwrite_collection_configuration;update_collection_configuration_from_legacy_update_metadataCollectionMetadatac                   D    e Zd ZU eed<   def fdZ edej                        e
dA fd              Ze
efded	ed
eddfd       Ze
efd	ed
edefd       Ze
efd	ed
eddfd       Ze
ddefdee   dee   d
edee   fd       Ze
d	eddfd       Ze
d	edefd       ZdededdfdZ edej                        e
deddfd              Z edej                        e
dddeefded	ede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               Z% ed!ej                        e
	 	 	 dBd"edee   d#ee   d$ee&   dee   f
d%              Z' ed&ej                        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'              Z(e
d(ede)fd)       Z* ed*ej                        e
d"ededdfd+              Z+ded"eddfd,Z, ed-ej                        e
eefded
ededdfd.              Z- ed/ej                        e
 e.       fd"edede/ee0      ddfd0              Z1 ed1ej                        e
 e.        e.        e.        e.       fded	e/e   de/ee      de/ee0      de/ee2      ddfd2              Z3ded3e2deddfd4Z4 ed5ej                        d6ee#e5d7f      dee!   fd8       Z6 ed9ej                        	 dCded:e7d;e8dede0d<ee9e      ddfd=       Z:d(e5dee!   de;fd>Z<e
dedefd?       Z=e
edfd
edee   defd@       Z> xZ?S )DSqlSysDB	_producersystemc                 X    t         |   |       |j                  t              | _        y N)super__init__requirer   _opentelemetry_client)selfr8   	__class__s     a/var/www/html/leadgen/airagagent/rag_env/lib/python3.12/site-packages/chromadb/db/mixins/sysdb.pyr<   zSqlSysDB.__init__:   s"     %+^^4G%H"    zSqlSysDB.create_segmentreturnNc                 j    t         |           | j                  j                  t              | _        y r:   )r;   start_systeminstancer   r7   )r?   r@   s    rA   rE   zSqlSysDB.start>   s$     	..x8rB   idnametenantc                    | j                         5 }t        d      }t        d      }| j                         j                  |      j	                  |j
                  |j                  |j                        j                  t        | j                  |            t        |      | j                         j                  |j
                        j                  |      j                  |j
                  t        |      k(              }t        || j                               \  }}		 |j!                  ||	       	 d d d        y # | j#                         $ r}
t%        d| d|       |
d }
~
ww xY w# 1 sw Y   y xY w)N	databasestenants	Database z already exists for tenant )txr   querybuilderintocolumnsrH   rI   	tenant_idinsertr   
uuid_to_dbselectfrom_wherer   parameter_formatexecuteunique_constraint_errorr   )r?   rH   rI   rJ   currL   rM   insert_databasesqlparamses              rA   create_databasezSqlSysDB.create_databaseD   s;    WWY 	#k*II&G!!#iy~~y7J7JK"4??2#67"4(%%'VGJJ'U7^U7::)??@	  "/43H3H3JKKCC('	 	( //1 +v%@I)	 	s*   DE*!D==E'E""E''E**E3c                    | j                         5 }t        d      }| j                         j                  |      j	                  |j
                  |j                        j                  |j                  t        |      k(        j                  |j                  t        |      k(        }t        || j                               \  }}|j                  ||      j                         }|st        d| d| d      |d   t        d| d| d      t        t         | j#                  |d               }	t%        |	|d   |      cd d d        S # 1 sw Y   y xY w)NrL   rN    not found for tenant z. Are you sure it exists?r      rH   rI   rJ   )rO   r   rP   rW   rV   rH   rI   rX   r   rS   r   rY   rZ   fetchoner   r   r   uuid_from_dbr!   )
r?   rI   rJ   r\   rL   qr^   r_   rowrH   s
             rA   get_databasezSqlSysDB.get_databasea   sC   WWY 	#k*I!!#y!	inn5y~~)==>y**nV.DDE  "!T%:%:%<=KC++c6*335C#v%;F8C\]  1v~#v%;F8C\]  D$"3"3CF";<BV)	 	 	s   D3EEc                    | j                         5 }t        d      }| j                         j                  |      j	                  |j
                  t        |      k(        j	                  |j                  t        |      k(        j                         }t        || j                               \  }}|dz   }|j                  ||      j                         }|st        d| d|       t        d      }	| j                         j                  |	      j	                  |	j                  t        |d         k(        j                         }t        || j                               \  }}|j                  ||       d d d        y # 1 sw Y   y xY w)NrL    RETURNING idrN   rc   collectionsr   )rO   r   rP   rW   rX   rI   r   rS   deleter   rY   rZ   rf   r   database_id)
r?   rI   rJ   r\   rL   rh   r^   r_   resultrm   s
             rA   delete_databasezSqlSysDB.delete_database}   sO   WWY 	%#k*I!!#y!y~~)==>y**nV.DDE  "!T%:%:%<=KC'C[[f-668F#iv5KF8$TUU  .K!!#{#{...2KKL	  "!T%:%:%<=KCKKV$3	% 	% 	%s   E'FF
limitoffsetc                    | j                         5 }t        d      }| j                         j                  |      j	                  |j
                  |j                        j                  |j                  t        |      k(        j                  |      j                  |t        j                  n|      j                  |j                        }t!        || j#                               \  }}|j%                  ||      j'                         }	|	D 
cg c]3  }
t)        t+        t,        | j/                  |
d               |
d   |      5 c}
cd d d        S c c}
w # 1 sw Y   y xY w)NrL   r   rd   re   )rO   r   rP   rW   rV   rH   rI   rX   rS   r   rs   rr   sysmaxsizeorderby
created_atr   rY   rZ   fetchallr!   r   r   rg   )r?   rr   rs   rJ   r\   rL   rh   r^   r_   rowsri   s              rA   list_databaseszSqlSysDB.list_databases   s)    WWY 	#k*I!!#y!	inn5y**nV.DDE#(=CKKe --.  "!T%:%:%<=KC;;sF+446D    D$"3"3CF";<Q!	 		 	s   C>E8EEEE!c                    | j                         5 }t        d      }| j                         j                  |      j	                  |j
                        j                  t        |            }t        || j                               \  }}	 |j                  ||       	 d d d        y # | j                         $ r}t        d| d      |d }~ww xY w# 1 sw Y   y xY w)NrM   Tenant  already exists)rO   r   rP   rQ   rR   rH   rT   r   r   rY   rZ   r[   r   )r?   rI   r\   rM   insert_tenantr^   r_   r`   s           rA   create_tenantzSqlSysDB.create_tenant   s    WWY 	T#I&G!!#g$t,-	  "-1F1F1HIKCTC(	T 	T //1 T+gdV?,KLRSST	T 	Ts*   A9CB''C:C

CCCc                    | j                         5 }t        d      }| j                         j                  |      j	                  |j
                        j                  |j
                  t        |      k(        }t        || j                               \  }}|j                  ||      j                         }|st        d| d      t        |      cd d d        S # 1 sw Y   y xY w)NrM   r}   
 not found)rI   )rO   r   rP   rW   rV   rH   rX   r   r   rY   rZ   rf   r   r'   )r?   rI   r\   rM   rh   r^   r_   ri   s           rA   
get_tenantzSqlSysDB.get_tenant   s    WWY 	%#I&G!!#w

#wzz^D%99:	  "!T%:%:%<=KC++c6*335C#gdV:$>??t$	% 	% 	%s   CCC&r\   segmentc                    t        t        |d         |d   |d   j                  t        |d         d       t        d      }| j	                         j                  |      j                  |j                  |j                  |j                  |j                        j                  t        | j                  |d               t        |d         t        |d   j                        t        | j                  |d                     }t        || j                               \  }}	 |j!                  ||       t        d	      }|d
   r'	 | j'                  |||j(                  |d   |d
          y y # | j#                         $ r}t%        d|d    d      |d }~ww xY w# t*        $ r}t,        j/                  d|         d }~ww xY w)NrH   typescope
collection
segment_idsegment_typesegment_scoper   segmentsSegment r~   segment_metadatametadataz"Error inserting segment metadata: )r   strvaluer   rP   rQ   rR   rH   r   r   r   rT   r   rU   r   rY   rZ   r[   r   _insert_metadatar   	Exceptionloggererror)	r?   r\   r   r   insert_segmentr^   r_   r`   
metadata_ts	            rA   create_segment_with_txzSqlSysDB.create_segment_with_tx   s   &!'$-0 '!(!1!7!7!',"78		
 $T(^W##	 Vtwt}=>wv/ww/556tw|/DEF	 	  nd.C.C.EFV	KKV$ -.
:
%%))DMJ'  ++- 	'74=/9	   A!EFs0   %E/ %F /FFF	G&F??Gc                 r    | j                         5 }| j                  ||       d d d        y # 1 sw Y   y xY wr:   )rO   r   )r?   r   r\   s      rA   create_segmentzSqlSysDB.create_segment  s4     WWY 	6#''W5	6 	6 	6s   -6zSqlSysDB.create_collectionFschemaconfigurationr   r   	dimensionget_or_createdatabasec                    ||st        d      t        t        |      |d       | j                  ||	|
      }|r9|r(|d   }| j                  |j                  |	|
      d   dfS t        d| d      t        ||t        |t        t        |            d |||	|
d		      }| j                         5 }t        d
      }t        d      }| j                         j                  |      j                  |j                  |j                  |j                   |j"                  |j$                        j'                  t)        | j+                  |d               t)        |d         t)        t-        |t        t        |                  t)        |d         | j                         j/                  |j                        j1                  |      j3                  |j                  t)        |
      k(        j3                  |j4                  t)        |	      k(              }t7        || j9                               \  }}	 |j;                  ||       t        d      }|d   r,| j?                  |||j@                  |j                  |d          |D ]  }| jC                  ||        	 d d d        |dfS # | j=                         $ r}t        d|d    d      |d }~ww xY w# 1 sw Y   |dfS xY w)Nz.id must be specified if get_or_create is Falsecollection_idcollection_name)rI   rJ   r   r   )rH   rJ   r   FCollection r~   	rH   rI   configuration_jsonserialized_schemar   r   rJ   r   versionrm   rL   rH   rI   r   collection_metadatar   T)"
ValueErrorr   r   get_collectionsrH   r   r%   r/   r   r4   rO   r   rP   rQ   rR   rI   config_json_strr   ro   rT   r   rU   r,   rV   rW   rX   rS   r   rY   rZ   r[   r   r   r   )r?   rH   rI   r   r   r   r   r   r   rJ   r   existingr   r\   rm   rL   insert_collectionr^   r_   r`   r   r   s                         rA   create_collectionzSqlSysDB.create_collection  s    :mMNN&!$R#'	
 ''T&8'T%a[
((%==( )  	  ,k$,OPPFt$6A  #

 WWY 1	:#.Kk*I !!#k"NN$$//))++ "4??:d3C#DE":f#56"C)40BH+M
 #:k#:;%%'VILL)U9%U9>>^H-EEFU9...2HHI 6 ""3T5J5J5LMKCC(
 45J*%%%,,MMz* $ :++C9:a1	:f 4# //1 +!*T"2!3?CE1	:f 4s2   2E?K2J&AK&K9KKKK zSqlSysDB.get_segmentsr   r   r   c                 2   t        t        |      |r|nd|r|j                  ndt        |      d       t        d      }t        d      }| j	                         j                  |      j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  	      j!                  |      j#                  |j                  |j$                  k(        j'                  |j                        }|r6|j)                  |j                  t+        | j-                  |            k(        }|r'|j)                  |j                  t+        |      k(        }|r1|j)                  |j                  t+        |j                        k(        }|r6|j)                  |j                  t+        | j-                  |            k(        }| j/                         5 }t1        || j3                               \  }	}
|j5                  |	|
      j7                         }t9        |d       }g }|D ]  \  }}| j;                  t        |            }t=        |      }t        |d   d         }t?        t        |d   d               }| j;                  |d   d	         }| jA                  |      }|jC                  tE        tG        tH        |      ||||i 
              |cd d d        S # 1 sw Y   y xY w)N r   r   r   c                 (    t        t        | d         S Nr   r   objectrs    rA   <lambda>z'SqlSysDB.get_segments.<locals>.<lambda>  s    fad1C rB   r   rd         )rH   r   r   r   r   
file_paths)%r   r   r   r   rP   rW   rV   rH   r   r   r   key	str_value	int_valuefloat_value
bool_value	left_joinonr   rw   rX   r   rU   rO   r   rY   rZ   ry   r   rg   listr&   _metadata_from_rowsappendr#   r   r   )r?   r   rH   r   r   
segments_tr   rh   r\   r^   r_   rz   
by_segmentr   r   segment_rowsr   s                    rA   get_segmentszSqlSysDB.get_segments}  s    	'!"g(,"052!*o		
 :&
-.
U:V  %%$$$$&&%%
 Yz"R
!6!667WZ]]#! 	
$ 
8K)LLMA
>$+??@A
((N5;;,GGHA%%
8S)TTA WWY 	#!!T%:%:%<=KC;;sF+446D 'CDJH,6 (
L&&s:7L)471:$Sa_5!..tAwqz:
33D9b>!##-!)#%	$ /	 	 	s   C>LLzSqlSysDB.get_collectionsc                    |||t        d      t        t        |      |r|ndd       t        d      }t        d      }t        d      }	| j	                         j                  |      j                  |j                  |j                  |j                  |j                  |	j                  |	j                  |j                  |j                  |j                  |j                  |j                         j#                  |      j%                  |j                  |j&                  k(        j#                  |	      j%                  |j(                  |	j                  k(        j+                  |j                        }
|r6|
j-                  |j                  t/        | j1                  |            k(        }
|r'|
j-                  |j                  t/        |      k(        }
||r|rt        d      }	|
j-                  |j(                  | j	                         j                  |	j                        j                  |	      j-                  |	j                  t/        |      k(        j-                  |	j                  t/        |      k(        k(        }
| j3                         5 }t5        |
| j7                               \  }}|j9                  ||      j;                         }t=        |d       }g }|D ]  \  }}| j?                  t        |            }tA        |      }t        |d	   d
         }| jC                  |      }|d	   d   rtE        |d	   d         nd}|d	   d   tG        |d	   d         }n| jI                  ||      }|jK                  tM        tO        tP        |      |tS        |      d||t        |d	   d         t        |d	   d         d		              ||d	}||||z    }n||d }|cddd       S # 1 sw Y   yxY w)z;Get collections by name, embedding function and/or metadataNzmIf name is specified, tenant and database must also be specified in order to uniquely identify the collectionr   r   rm   r   rL   c                 (    t        t        | d         S r   r   r   s    rA   r   z*SqlSysDB.get_collections.<locals>.<lambda>  s    D14F rB   r   rd   r   r         r   )*r   r   r   r   rP   rW   rV   rH   rI   r   r   rS   r   r   r   r   r   r   r   r   ro   rw   rX   r   rU   rO   r   rY   rZ   ry   r   rg   r   r   intr-   !_insert_config_from_legacy_paramsr   r%   r   r   r0   )r?   rH   rI   rJ   r   rr   rs   collections_tr   databases_trh   r\   r^   r_   rz   by_collectionrm   r   collection_rowsr   r   r   s                         rA   r   zSqlSysDB.get_collections  s    83C  	'!$R+/4R	
 m,01
K(U=!V  ""--''  %%$$$$&&%% Yz"R  J$<$<<=Y{#R))[^^;<W]%%&) 	
, ((N4??2;N,OOPA**nT.BBCA :&X,K))$$&'{#{''>(+CCD{,,v0FFGHA WWY 0	#!!T%:%:%<=KC;;sF+446D#D*FGMK2? !.&&s='9:O,471:33D9/3AwqzCQ
Ot	71:)$OQ
%M %)$J$J%x%M ""b>!+K), +/!)"+"471:!$T!WQZ !'!H  >F)&6E>B)&'2a0	 0	 0	s   EO33O<r   c                     | j                  |      }t        |      dk(  rt        d| d      t        |d   | j	                  |            S )N)rH   r   r   z does not exist.)r   )r   r   )r   lenr   r    r   )r?   r   rm   s      rA   get_collection_with_segmentsz%SqlSysDB.get_collection_with_segments=  s^     **m*<{q +m_<L MNN$"1~&&-&@
 	
rB   zSqlSysDB.delete_segmentc                    t        dt        |      i       t        d      }| j                         j	                  |      j                  |j                  t        | j                  |            k(        j                         }| j                         5 }t        || j                               \  }}|dz   }|j                  ||      j                         }|st        d| d      	 ddd       y# 1 sw Y   yxY w)zDelete a segment from the SysDBr   r   rl   r   r   N)r   r   r   rP   rW   rX   rH   r   rU   rn   rO   r   rY   rZ   rf   r   )	r?   r   rH   trh   r\   r^   r_   rp   s	            rA   delete_segmentzSqlSysDB.delete_segmentI  s     	'c"g	

 *U1XU144>$//"*=>>?VX	 	
 WWY 	?#!!T%:%:%<=KC'C[[f-668F#hrd*$=>> 	? 	? 	?s   AC11C:c                 :   t        d      }| j                         j                  |      j                  |j                  t        | j                  |            k(        j                         }t        || j                               \  }}|j                  ||       y )Nr   )r   rP   rW   rX   r   r   rU   rn   r   rY   rZ   )r?   r\   r   r   rh   r^   r_   s          rA   delete_segments_for_collectionz'SqlSysDB.delete_segments_for_collectionc  sz    :&
U:U:((N4??:;V,WWXVX	 	
 a!6!6!89VC rB   zSqlSysDB.delete_collectionc           	         t        dt        |      i       t        d      }t        d      }| j                         j	                  |      j                  |j                  t        | j                  |            k(        j                  |j                  | j                         j                  |j                        j	                  |      j                  |j                  t        |      k(        j                  |j                  t        |      k(        k(        j                         }| j                         5 }t        || j!                               \  }}	|dz   }|j#                  ||	      j%                         }
|
st'        d| d      | j)                  ||       ddd       | j*                  j-                  
d          y# 1 sw Y   (xY w)	z{Delete a collection and all associated segments from the SysDB. Deletes
        the log stream for this collection as well.r   rm   rL   rl   r   r   Nr   )r   r   r   rP   rW   rX   rH   r   rU   ro   rV   rI   rS   rn   rO   r   rY   rZ   rf   r   r   r7   
delete_log)r?   rH   rJ   r   r   r   rh   r\   r^   r_   rp   s              rA   delete_collectionzSqlSysDB.delete_collectionn  s    	'R	

 - K(U1XU144>$//"*=>>?U$$&'{#{''>(+CCD{,,v0FFGH VX 	
 WWY 	9#!!T%:%:%<=KC'C[[f-668F#k"Z$@AA//R8	9 	!!&),	9 	9s   :A&GGzSqlSysDB.update_segmentc                    t        t        |      t        |      d       t        d      }t        d      }| j                         j	                  |      j                  |j                  t        | j                  |            k(        j                  |j                  t        | j                  |                  }| j                         5 }t        || j                               \  }}	|r|j                  ||	       || j                         j                  |      j                  |j                   t        | j                  |            k(        j#                         }t        || j                               \  }}	|j                  ||	       nd|t%               k7  rWt'        t(        |      }t'        t(        |      }| j+                  |||j                   ||t        |j-                                      d d d        y # 1 sw Y   y xY w)N)r   r   r   r   )r   r   r   rP   updaterX   rH   r   rU   setr   rO   r   rY   rZ   rW   r   rn   r(   r   r)   r   keys)
r?   r   rH   r   r   r   rh   r\   r^   r_   s
             rA   update_segmentzSqlSysDB.update_segment  s    	'!"g!*o	
 :&
-.
 VJU:==N4??23F$GGHS&&tz7R(ST	 	
 WWY 	#!!T%:%:%<=KCC(%%'U:&U:00N4??SUCV4WWXVX	  &a)>)>)@AVC([]*99%%))(#	 	 	s   D)G>>HzSqlSysDB.update_collectionc                 f   t        dt        |      i       t        d      }t        d      }| j                         j	                  |      j                  |j                  t        | j                  |            k(        }|t               k(  s%|j                  |j                  t        |            }|t               k(  s%|j                  |j                  t        |            }| j                         5 }	t        || j                               \  }
}|
r6|
dz   }
|	j!                  |
|      }|j#                         st%        d| d      |t               k7  r| j                         j'                  |      j                  |j(                  t        | j                  |            k(        j+                         }t        || j                               \  }
}|	j!                  |
|       |Gt-        t.        |      }| j1                  |	||j(                  ||t        |j3                                      |t               k7  r$t-        t4        |      }| j7                  |	||       n=|t               k7  r0t-        t.        |      }|t9        |      }| j7                  |	||       d d d        y # 1 sw Y   y xY w)Nr   rm   r   rl   r   r   )r   r   r   rP   r   rX   rH   r   rU   r(   r   rI   r   rO   r   rY   rZ   rf   r   rW   r   rn   r   r)   r   r   r+   _update_config_json_strr3   )r?   rH   rI   r   r   r   r   r   rh   r\   r^   r_   rp   update_configurations                 rA   update_collectionzSqlSysDB.update_collection  sl    	'R	

 m,01
 VM"U=##~doob6I'JJK 	
 {}$m((.*>?AKM)m--~i/HIAWWY 0	T#!!T%:%:%<=KCO+S&1('+bT(DEE ;=(%%'U:&U"00N4??SUCV4WW VX  &a)>)>)@AVC('#NH=H))""00 HMMO, -'+1=($ ,,S2FK{},#NH=H+W ( -
 44S:NPRSa0	T 0	T 0	Ts   4F*J''J0r   c                 "   t        d      }| j                         j                  |      j                  |j                        j                  |j                  t        | j                  |            k(        }t        || j                               \  }}|j                  ||      j                         }|st        d| d      |d   }	t        |	      }
t        |
|      }| j                         j!                  |      j#                  |j                  t        t%        |                  j                  |j                  t        | j                  |            k(        }t        || j                               \  }}|j                  ||       y )Nrm   r   r   r   )r   rP   rW   rV   r   rX   rH   r   rU   r   rY   rZ   rf   r   r-   r2   r   r   r1   )r?   r\   r   rH   r   rh   r^   r_   ri   r   existing_config
new_configs               rA   r   z SqlSysDB._update_config_json_str  sV    m,U=!VM112U=##~doob6I'JJK	 	
 a!6!6!89Vkk#v&//1+bT <==a&EoV71

 VM"S--CJOP U=##~doob6I'JJK 	
 a!6!6!89VC rB   zSqlSysDB._metadata_from_rowsrz   .c                     t        dt        |      i       i }|D ]l  }t        |d         }|d   t        |d         ||<   (|d   t        |d         ||<   ?|d   t	        |d         ||<   V|d   \t        |d         ||<   n |xs dS )zGiven SQL rows, return a metadata map (assuming that the last four columns
        are the key, str_value, int_value & float_value)num_rowsN)r   r   r   r   floatbool)r?   rz   r   ri   r   s        rA   r   zSqlSysDB._metadata_from_rows<  s     	'CI	

 =? 		.Cc"g,C2w" #CGR$ #CGR$ %c"gR$ $SW		. 4rB   zSqlSysDB._insert_metadatatableid_col
clear_keysc                 x   t        dt        |      i       |r| j                         j                  |      j	                  |t        | j                  |            k(        j	                  |j                  j                  |D cg c]  }t        |       c}            j                         }t        || j                               \  }	}
|j                  |	|
       | j                         j                  |      j                  ||j                  |j                  |j                   |j"                  |j$                        }| j                  |      }|j'                         D ]  \  }}t)        |t*              r;|j-                  t        |      t        |      d d d t        t/        |                  }Rt)        |t0              r2|j-                  t        |      t        |      t        |      d d d       }t)        |t.              r2|j-                  t        |      t        |      d t        |      d d       }t)        |t2              r3|j-                  t        |      t        |      d d t        |      d       }| t        || j                               \  }	}
|	r|j                  |	|
       y y c c}w )Nnum_keys)r   r   rP   rW   rX   r   rU   r   isinrn   r   rY   rZ   rQ   rR   r   r   r   r   items
isinstancer   rT   r   r   r   )r?   r\   r   r   rH   r   r   krh   r^   r_   sql_idvs                rA   r   zSqlSysDB._insert_metadataT  s[    	'CM	

 !!#uv0C!DDEuyy~~*&MQ~a'8&MNO  "!T%:%:%<=KCKKV$ T%[W		!!   	
 $NN$ (	DAq !T"HH"6*"1%"3q6* As#HH"6*"1%"1% As#HH"6*"1%"1% Au%HH"6*"1%"1% Q(	T a!6!6!89VKKV$ } 'Ns   J7c                     t        d      }t               }t        |t        t        |            }| j                         j                  |      j                  |j                  t        |            j                  |j                  t        |      k(        }t        || j                               \  }}| j                         5 }	|	j                  ||       ddd       t!        |      S # 1 sw Y   t!        |      S xY w)zuInsert the configuration from legacy metadata params into the collections table, and return the configuration object.rm   N)r   r*   r,   r   r4   rP   r   r   r   r   rX   rH   r   rY   rO   rZ   r-   )
r?   r   r   r   create_collection_configconfiguration_json_strrh   r^   r_   r\   s
             rA   r   z*SqlSysDB._insert_config_from_legacy_params  s     m,#@#B !L$d+=x&H"
 VM"S--56 U=##~m'DDE 	
 a!6!6!89VWWY 	%#KKV$	%:;QRR	%:;QRRs   C**C=c                     t         r:   )NotImplementedError)r?   rH   s     rA   get_collection_sizezSqlSysDB.get_collection_size  s    !!rB   c                 P    ||dk(  rdn|}t        | j                  ||            S )zFGets the number of collections for the (tenant, database) combination.r   )rJ   r   )r   r   )r?   rJ   r   request_databases       rA   count_collectionszSqlSysDB.count_collections  s3     '/&6(b.h4''v@P'QRRrB   )rC   N)NNNr:   )@__name__
__module____qualname__r   __annotations__r   r<   r   r   ALLr   rE   r   r   r   ra   r!   rj   rq   r   r   r   r{   r   r'   r   r   r#   r   r   r   r   r*   r$   r   r   r%   r   r&   r   r   r    r   r   r   r   r(   r"   r)   r   r+   r   r   r   r   r   r   r
   r   r.   r   r  r  __classcell__)r@   s   @rA   r6   r6   5   s$    Iv I +-E-I-IJ9  K9 1?!+.	 8 4B  c x  6 7E %C % %$ % %8   $ $$	}  	
 
(	 < T# T$ T T %s %v % %"0& 07 0t 0f +-E-I-IJ6g 6$ 6  K6 .0H0L0LM (,#'#$(e e  e   	e 
 5e  7#e  8$e  C=e  e  e  e  
z4	 e   Ne N )+C+G+GH ""(,EE TNE sm	E
 %E 
'	E  IEN ,.F.J.JK ""$(# $sTNs sms 	s
 s }s s 
*	s  Lsj 	
!	
		
 	
 +-E-I-IJ? ?4 ?D ?  K?0	!& 	!d 	!t 	! .0H0L0LM %(	'-'- '- 	'-
 
'-  N'-R +-E-I-IJ
 @K}	.. . #8N#;<	.
 
.  K.` .0H0L0LM '2m5@]?J} MNTNT s#NT $HSM2	NT
 #8N#;<NT (23
NT 
NT  NNT`!!1N!TX!	!> 02J2N2NO U38_- 	(	  P . -/G/K/KL *.U%U% U% 	U%
 U% !U% SX&U% 
U% MU%nS S,4X,>S	 S: "d "s " "  %"&SS 3-S 
	S SrB   r6   )Floggingru   typingr   r   r   r   r   r   r	   r
   uuidr   	overridesr   pypikar   r   	itertoolsr   chromadb.api.typesr   chromadb.configr   r   r   chromadb.db.baser   r   r   r   chromadb.db.systemr   chromadb.errorsr   r    chromadb.telemetry.opentelemetryr   r   r   r   chromadb.ingestr   chromadb.typesr    r!   r"   r#   r$   r%   r&   r'   r(   r)   %chromadb.api.collection_configurationr*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   	getLoggerr	  r   r6    rB   rA   <module>r      s     
 I I I      % D D C C $  %      
		8	$eSue eSrB   