
    i                     h    S SK Jr  S SKrS SKrS SKJr  S SKJr  S SKJ	r	  SSK
JrJr   " S S	5      rg)
    )annotationsN)contextmanager)Path)Iterator   )
SCHEMA_SQLSCHEMA_VERSIONc                  x    \ rS rSrS
S jrSS jr\SS j5       r\SS j5       r	\SS j5       r
\SS j5       rSrg	)SQLiteStore   c                $    [        U5      U l        g N)strdb_path)selfr   s     </home/sebas/agents-database/src/shared_agent_memory/store.py__init__SQLiteStore.__init__   s    7|    c           	     
   U R                  5        nUR                  [        5        U R                  USSS[         S35        U R                  USSS5        U R                  USSS5        U R                  USSS5        U R                  USS	S5        U R                  USS
S5        U R                  USSS5        U R                  USSS[         S35        U R                  USSS5        S S S 5        g ! , (       d  f       g = f)Nmemoriesschema_versionzTEXT NOT NULL DEFAULT ''subtypeTEXTrun_idtask_idurldomainorigin_agenttasks)
connectionexecutescriptr   _ensure_columnr	   r   conns     r   
initializeSQLiteStore.initialize   s    __$z*j2BF]^l]mmnDopj)VDj(FCj)VDj%@j(FCj.&Ig/?CZ[iZjjkAlmgx@ s   CC44
Dc              #    #    [         R                  " U R                  5      n[         R                  Ul        UR                  S5         Uv   UR                  5         UR                  5         g ! UR                  5         f = f7f)NzPRAGMA foreign_keys = ON)sqlite3connectr   Rowrow_factoryexecutecommitcloser%   s     r   r"   SQLiteStore.connection   sU     t||,";;/0	JKKMJJLDJJLs   AB
A/ B/BBc                .    [         R                  " U SSS9$ )NT)ensure_ascii	sort_keys)jsondumpsvalues    r   r6   SQLiteStore.dumps(   s    zz%ddCCr   c                >    U (       d  g [         R                  " U 5      $ r   )r5   loadsr7   s    r   r;   SQLiteStore.loads,   s    zz%  r   c                    U R                  SU S35       Vs1 s H  oDS   iM	     nnX%;   a  g U R                  SU SU SU 35        g s  snf )NzPRAGMA table_info()namezALTER TABLE z ADD COLUMN  )r.   )r&   tablecolumn
definitionrowexistings         r   r$   SQLiteStore._ensure_column2   s\    +/<<:LUGST8U+VW+VCK+VW|E7,vha
|LM Xs   A	)r   N)r   z
str | PathreturnNone)rG   rH   )rG   zIterator[sqlite3.Connection])r8   objectrG   r   )r8   z
str | NonerG   rI   )
r&   zsqlite3.ConnectionrA   r   rB   r   rC   r   rG   rH   )__name__
__module____qualname____firstlineno__r   r'   r   r"   staticmethodr6   r;   r$   __static_attributes__ r   r   r   r      sa    $A   D D ! !
 N Nr   r   )
__future__r   r5   r*   
contextlibr   pathlibr   typingr   schemar   r	   r   rP   r   r   <module>rV      s&    "   %   .+N +Nr   