
    ri                     p    d dl m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dl
mZmZ  G d d	          ZdS )
    )annotationsN)contextmanager)Path)Iterator   )
SCHEMA_SQLSCHEMA_VERSIONc                  ~    e Zd ZddZddZedd            Zedd            Zedd            Z	edd            Z
dS )SQLiteStoredb_path
str | PathreturnNonec                .    t          |          | _        d S N)strr   )selfr   s     =/Users/sebas/agents-database/src/shared_agent_memory/store.py__init__zSQLiteStore.__init__   s    7||    c           	     h   |                                  5 }|                    t                     |                     |dddt           d           |                     |ddd           |                     |ddd           |                     |ddd           |                     |dd	d           |                     |dd
d           |                     |ddd           |                     |dddt           d           |                     |ddd           d d d            d S # 1 swxY w Y   d S )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   
initializezSQLiteStore.initialize   s   __ 
	A$z***j2BDo^lDoDoDopppj)VDDDj(FCCCj)VDDDj%@@@j(FCCCj.&IIIg/?Al[iAlAlAlmmmgx@@@
	A 
	A 
	A 
	A 
	A 
	A 
	A 
	A 
	A 
	A 
	A 
	A 
	A 
	A 
	A 
	A 
	A 
	As   DD''D+.D+Iterator[sqlite3.Connection]c              #    K   t          j        | j                  }t           j        |_        |                    d           	 |V  |                                 |                                 d S # |                                 w xY w)NzPRAGMA foreign_keys = ON)sqlite3connectr   Rowrow_factoryexecutecommitcloser&   s     r   r#   zSQLiteStore.connection   sr      t|,,";/000	JJJKKMMMJJLLLLLDJJLLLLs   A1 1Bvalueobjectr   c                0    t          j        | dd          S )NT)ensure_ascii	sort_keys)jsondumpsr2   s    r   r8   zSQLiteStore.dumps(   s    z%ddCCCCr   
str | Nonec                2    | sd S t          j        |           S r   )r7   loadsr9   s    r   r<   zSQLiteStore.loads,   s     	4z%   r   r'   sqlite3.Connectiontablecolumn
definitionc                    d |                      d| d          D             }||v rd S |                      d| d| d|            d S )Nc                    h | ]
}|d          S )name ).0rows     r   	<setcomp>z-SQLiteStore._ensure_column.<locals>.<setcomp>4   s    WWWCCKWWWr   zPRAGMA table_info()zALTER TABLE z ADD COLUMN  )r/   )r'   r>   r?   r@   existings        r   r%   zSQLiteStore._ensure_column2   sn    WW4<<8UU8U8U8U+V+VWWWXFLELLvLL
LLMMMMMr   N)r   r   r   r   )r   r   )r   r)   )r2   r3   r   r   )r2   r:   r   r3   )
r'   r=   r>   r   r?   r   r@   r   r   r   )__name__
__module____qualname__r   r(   r   r#   staticmethodr8   r<   r%   rD   r   r   r   r      s        $ $ $ $A A A A    ^ D D D \D ! ! ! \!
 N N N \N N Nr   r   )
__future__r   r7   r+   
contextlibr   pathlibr   typingr   schemar   r	   r   rD   r   r   <module>rT      s    " " " " " "   % % % % % %             . . . . . . . .+N +N +N +N +N +N +N +N +N +Nr   