pub struct LocalStorage { /* private fields */ }Expand description
Local SQLite storage implementation
Uses a Mutex<Connection> to ensure thread-safe access to the
underlying libsql connection, which is not Send + Sync by default.
Implementations§
Source§impl LocalStorage
impl LocalStorage
Sourcepub async fn new(db_path: &str) -> Result<Self, StorageError>
pub async fn new(db_path: &str) -> Result<Self, StorageError>
Create a new local storage instance
Sourcepub async fn from_connection(conn: Connection) -> Result<Self, StorageError>
pub async fn from_connection(conn: Connection) -> Result<Self, StorageError>
Create from existing connection (for use with AgentClient)
This will initialize the database schema if it hasn’t been set up yet.
Sourcepub fn connection(&self) -> &Mutex<Connection>
pub fn connection(&self) -> &Mutex<Connection>
Get connection reference (locked)
Useful for direct SQL access in tests or migrations.
Trait Implementations§
Source§impl SessionStorage for LocalStorage
impl SessionStorage for LocalStorage
Source§fn list_sessions<'life0, 'life1, 'async_trait>(
&'life0 self,
query: &'life1 ListSessionsQuery,
) -> Pin<Box<dyn Future<Output = Result<ListSessionsResult, StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_sessions<'life0, 'life1, 'async_trait>(
&'life0 self,
query: &'life1 ListSessionsQuery,
) -> Pin<Box<dyn Future<Output = Result<ListSessionsResult, StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
List all sessions
Source§fn get_session<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Session, StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_session<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Session, StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get a session by ID (includes active checkpoint)
Source§fn create_session<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 CreateSessionRequest,
) -> Pin<Box<dyn Future<Output = Result<CreateSessionResult, StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_session<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 CreateSessionRequest,
) -> Pin<Box<dyn Future<Output = Result<CreateSessionResult, StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Create a new session with initial checkpoint
Source§fn update_session<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Uuid,
request: &'life1 UpdateSessionRequest,
) -> Pin<Box<dyn Future<Output = Result<Session, StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn update_session<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Uuid,
request: &'life1 UpdateSessionRequest,
) -> Pin<Box<dyn Future<Output = Result<Session, StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Update session metadata (title, visibility)
Source§fn delete_session<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<(), StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn delete_session<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<(), StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Delete a session
Source§fn list_checkpoints<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Uuid,
query: &'life1 ListCheckpointsQuery,
) -> Pin<Box<dyn Future<Output = Result<ListCheckpointsResult, StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_checkpoints<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Uuid,
query: &'life1 ListCheckpointsQuery,
) -> Pin<Box<dyn Future<Output = Result<ListCheckpointsResult, StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
List checkpoints for a session
Source§fn get_checkpoint<'life0, 'async_trait>(
&'life0 self,
checkpoint_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Checkpoint, StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_checkpoint<'life0, 'async_trait>(
&'life0 self,
checkpoint_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Checkpoint, StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get a checkpoint by ID
Source§fn create_checkpoint<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Uuid,
request: &'life1 CreateCheckpointRequest,
) -> Pin<Box<dyn Future<Output = Result<Checkpoint, StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_checkpoint<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Uuid,
request: &'life1 CreateCheckpointRequest,
) -> Pin<Box<dyn Future<Output = Result<Checkpoint, StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Create a new checkpoint for a session
Source§fn get_active_checkpoint<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Checkpoint, StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_active_checkpoint<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Checkpoint, StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get the latest/active checkpoint for a session
Source§fn get_session_stats<'life0, 'async_trait>(
&'life0 self,
_session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<SessionStats, StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_session_stats<'life0, 'async_trait>(
&'life0 self,
_session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<SessionStats, StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get session stats (optional - returns default if not supported)
Auto Trait Implementations§
impl !Freeze for LocalStorage
impl !RefUnwindSafe for LocalStorage
impl Send for LocalStorage
impl Sync for LocalStorage
impl Unpin for LocalStorage
impl !UnwindSafe for LocalStorage
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request