Ë
    BêñiÓ  ã                   ó„   — d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 dZdZdeddfd	„Z G d
„ d«      Zdd„Zy)é    N)ÚPath)ÚIterable)Úmodelszstorage.dbmzstorage.sqliteÚlocationÚreturnc                 ób  — t        | «      t        z  }t        | «      t        z  }|j                  «       ry |j                  «       sy 	 t	        j
                  t        |«      d«      }t        j                  t        |«      «      }|j                  «       }|j                  d«       |j                  «       D ]y  }||   }t        |t        «      r|j                  d«      }t        j                  |«      }t         j#                  |«      }|j                  d|t        j$                  |«      f«       Œ{ |j'                  «        |j)                  «        |j)                  «        |j+                  «        y # t,        $ r2}	t/        j0                  d|	«       t/        j0                  d«       |	‚d }	~	ww xY w)NÚcúCCREATE TABLE IF NOT EXISTS points (id TEXT PRIMARY KEY, point BLOB)úutf-8z INSERT INTO points VALUES (?, ?)z Failed to migrate dbm to sqlite:zKPlease try to use previous version of qdrant-client or re-create collection)r   ÚSTORAGE_FILE_NAME_OLDÚSTORAGE_FILE_NAMEÚexistsÚdbmÚopenÚstrÚsqlite3ÚconnectÚcursorÚexecuteÚkeysÚ
isinstanceÚencodeÚpickleÚloadsÚCollectionPersistenceÚ
encode_keyÚBinaryÚcommitÚcloseÚunlinkÚ	ExceptionÚloggingÚerror)
r   Údbm_pathÚsql_pathÚdbm_storageÚconÚcurÚkeyÚvalueÚ
sqlite_keyÚes
             úa/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/qdrant_client/local/persistence.pyÚtry_migrate_to_sqliter.      sY  € Ü�H‹~Ô 5Ñ5€HÜ�H‹~Ô 1Ñ1€Hà‡�ÔØà�?‰?ÔØð Ü—h‘hœs 8›}¨cÓ2ˆä�o‰oœc (›mÓ,ˆØ�j‰j‹lˆð 	�‰ÐYÔZà×#Ñ#Ó%ò 	ˆCØ Ñ$ˆEÜ˜#œsÔ#Ø—j‘j Ó)�Ü—,‘,˜sÓ#ˆCÜ.×9Ñ9¸#Ó>ˆJà�K‰KØ2àÜ—N‘N 5Ó)ðõð	ð 	�
‰
ŒØ�	‰	ŒØ×ÑÔØ�‰ÕøÜò Ü�‰Ð8¸!Ô<Ü�‰ØYô	
ð ˆûðús   ÁD*E3 Å3	F.Å<-F)Æ)F.c                   óà   — e Zd ZU dZedz  ed<   edej                  de	fd„«       Z
dde	defd„Zdd	„Zdd
„Zdej                  ddfd„Zdej                  ddfd„Zdeej                     fd„Zy)r   NÚCHECK_SAME_THREADr)   r   c                 óp   — t        j                  t        j                  |«      «      j	                  d«      S )Nr   )Úbase64Ú	b64encoder   ÚdumpsÚdecode)Úclsr)   s     r-   r   z CollectionPersistence.encode_key?   s'   € ä×Ñ¤§¡¨SÓ 1Ó2×9Ñ9¸'ÓBÐBó    r   Úforce_disable_check_same_threadc                 ó.  — t        |«       t        |«      t        z  | _        | j                  j                  j                  dd¬«       | j                  €X|du rTt        j                  d«      5 }|j                  d«      j                  «       d   }|dk7  | j                  _        ddd«       |rd| j                  _        t        j                  t        | j                  «      | j                  ¬	«      | _        | j                  «        y# 1 sw Y   ŒfxY w)
z‹
        Create or load a collection from the local storage.
        Args:
            location: path to the collection directory.
        T)Úexist_okÚparentsNFz:memory:zNselect * from pragma_compile_options where compile_options like 'THREADSAFE=%'r   zTHREADSAFE=1)Úcheck_same_thread)r.   r   r   r   ÚparentÚmkdirr0   r   r   r   ÚfetchoneÚ	__class__r   ÚstorageÚ_ensure_table)Úselfr   r8   Útmp_connÚ
threadsafes        r-   Ú__init__zCollectionPersistence.__init__C   sð   € ô 	˜hÔ'ä˜X›Ô):Ñ:ˆŒØ�‰×Ñ×"Ñ"¨D¸$Ð"Ô?à×!Ñ!Ð)Ð.MÐQVÑ.VÜ—‘ Ó,ð 	P°ð &×-Ñ-Ødóç‘(“*˜Qñ �
ð 4>ÀÑ3O�—‘Ô0÷	Pñ +Ø/4ˆD�N‰NÔ,ä—‘Ü�—‘ÓØ"×4Ñ4ô
ˆŒð
 	×ÑÕ÷'	Pð 	Pús   Á/7DÄDc                 ó8   — | j                   j                  «        y )N)rA   r   )rC   s    r-   r   zCollectionPersistence.closee   s   € Ø�‰×ÑÕr7   c                 óŽ   — | j                   j                  «       }|j                  d«       | j                   j                  «        y )Nr
   )rA   r   r   r   )rC   r   s     r-   rB   z#CollectionPersistence._ensure_tableh   s1   € Ø—‘×$Ñ$Ó&ˆØ�‰Ð\Ô]Ø�‰×ÑÕr7   Úpointc                 ó  — | j                  |j                  «      }t        j                  |«      }| j                  j                  «       }|j                  d|t        j                  |«      f«       | j                  j                  «        y)zi
        Persist a point in the local storage.
        Args:
            point: point to persist
        z+INSERT OR REPLACE INTO points VALUES (?, ?)N)
r   Úidr   r4   rA   r   r   r   r   r   )rC   rI   r)   r*   r   s        r-   ÚpersistzCollectionPersistence.persistm   sk   € ð �o‰o˜eŸh™hÓ'ˆÜ—‘˜UÓ#ˆà—‘×$Ñ$Ó&ˆà�‰Ø9àÜ—‘˜uÓ%ðô	
ð 	�‰×ÑÕr7   Úpoint_idc                 ó´   — | j                  |«      }| j                  j                  «       }|j                  d|f«       | j                  j	                  «        y)zv
        Delete a point from the local storage.
        Args:
            point_id: id of the point to delete
        zDELETE FROM points WHERE id = ?N)r   rA   r   r   r   )rC   rM   r)   r   s       r-   ÚdeletezCollectionPersistence.delete‚   sJ   € ð �o‰o˜hÓ'ˆØ—‘×$Ñ$Ó&ˆØ�‰Ø-ØˆFô	
ð 	�‰×ÑÕr7   c              #   óÀ   K  — | j                   j                  «       }|j                  d«       |j                  «       D ]  }t	        j
                  |d   «      –— Œ y­w)zg
        Load a point from the local storage.
        Returns:
            point: loaded point
        zSELECT point FROM pointsr   N)rA   r   r   Úfetchallr   r   )rC   r   Úrows      r-   ÚloadzCollectionPersistence.load�   sP   è ø€ ð —‘×$Ñ$Ó&ˆØ�‰Ð1Ô2Ø—?‘?Ó$ò 	'ˆCÜ—,‘,˜s 1™vÓ&Ó&ñ	'ùs   ‚AA)F©r   N)Ú__name__Ú
__module__Ú__qualname__r0   ÚboolÚ__annotations__Úclassmethodr   ÚExtendedPointIdr   r   rF   r   rB   ÚPointStructrL   rO   r   rS   © r7   r-   r   r   <   s¢   … Ø%)Ð�t˜d‘{Ó)àðC˜V×3Ñ3ð C¸ò Có ðCñ  ð  Àtó  óDóð
˜V×/Ñ/ð °Dó ð*˜v×5Ñ5ð ¸$ó ð	'�h˜v×1Ñ1Ñ2ô 	'r7   r   c                  óö  — dd l } | j                  «       5 }t        |«      }t        j                  dg d¢ddi¬«      }|j                  |«       |j                  «       D ]
  }||k(  sJ ‚ n ~t        |«      }|j                  «       D ]
  }||k(  sJ ‚ n |j                  |j                  «       |j                  |j                  «       |j                  «       D ]  }J d«       ‚ 	 d d d «       y # 1 sw Y   y xY w)Nr   é   )g      ð?g       @g      @Úa)rK   ÚvectorÚpayloadzShould not load anything)	ÚtempfileÚTemporaryDirectoryr   r   r\   rL   rS   rO   rK   )rc   ÚtmpdirÚpersistencerI   Úloaded_pointÚ_s         r-   Útest_persistenceri   œ   s  € Ûà	×	$Ñ	$Ó	&ð 5¨&Ü+¨FÓ3ˆÜ×"Ñ" a²È#ÈqÈÔRˆØ×Ñ˜EÔ"Ø'×,Ñ,Ó.ò 	ˆLØ 5Ò(Ð(Ð(Ùð	ð Ü+¨FÓ3ˆØ'×,Ñ,Ó.ò 	ˆLØ 5Ò(Ð(Ð(Ùð	ð 	×Ñ˜5Ÿ8™8Ô$Ø×Ñ˜5Ÿ8™8Ô$Ø×!Ñ!Ó#ò 	5ˆAØ4Ð4Ó4�5ñ	5÷!5÷ 5ñ 5ús   •CC/Ã/C8rT   )r2   r   r"   r   r   Úpathlibr   Útypingr   Úqdrant_client.httpr   r   r   r   r.   r   ri   r]   r7   r-   ú<module>rm      sO   ðÛ Û 
Û Û Û Ý Ý å %à%Ð Ø$Ð ð* Cð *¨Dó *÷Z]'ñ ]'ô@5r7   