pub trait SessionStorage: Send + Sync {
// Required methods
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 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 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 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 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 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 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 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;
// Provided methods
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_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 { ... }
}Expand description
Unified session storage trait
Abstracts session and checkpoint operations for both Stakpak API and local SQLite storage backends.
Required Methods§
Sourcefn 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
Sourcefn 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)
Sourcefn 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
Sourcefn 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)
Sourcefn 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
Sourcefn 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
Sourcefn 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
Sourcefn 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
Provided Methods§
Sourcefn 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
Sourcefn 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)