pub struct ConversationStore { /* private fields */ }Expand description
SQLite-backed conversation store
Implementations§
Source§impl ConversationStore
impl ConversationStore
Sourcepub fn open<P: AsRef<Path>>(path: P) -> SqlResult<Self>
pub fn open<P: AsRef<Path>>(path: P) -> SqlResult<Self>
Open or create a SQLite database at the given path.
Use :memory: for an in-memory database (useful for testing).
Sourcepub fn create_session(
&self,
session_id: &str,
system_prompt: &str,
) -> SqlResult<()>
pub fn create_session( &self, session_id: &str, system_prompt: &str, ) -> SqlResult<()>
Create a new conversation session
Sourcepub fn delete_session(&self, session_id: &str) -> SqlResult<()>
pub fn delete_session(&self, session_id: &str) -> SqlResult<()>
Delete a session and all its messages
Sourcepub fn list_sessions(&self) -> SqlResult<Vec<StoredSession>>
pub fn list_sessions(&self) -> SqlResult<Vec<StoredSession>>
List all sessions, ordered by most recently updated first
Sourcepub fn add_message(
&self,
session_id: &str,
role: &str,
content: &str,
token_count: Option<u64>,
) -> SqlResult<()>
pub fn add_message( &self, session_id: &str, role: &str, content: &str, token_count: Option<u64>, ) -> SqlResult<()>
Add a message to a session
Sourcepub fn get_history(
&self,
session_id: &str,
policy: Option<RetentionPolicy>,
) -> SqlResult<Vec<StoredMessage>>
pub fn get_history( &self, session_id: &str, policy: Option<RetentionPolicy>, ) -> SqlResult<Vec<StoredMessage>>
Get message history for a session, optionally applying a retention policy
Sourcepub fn message_count(&self, session_id: &str) -> SqlResult<u64>
pub fn message_count(&self, session_id: &str) -> SqlResult<u64>
Get the number of messages in a session
Sourcepub fn total_tokens(&self, session_id: &str) -> SqlResult<u64>
pub fn total_tokens(&self, session_id: &str) -> SqlResult<u64>
Get the total token count for a session
Sourcepub fn prune_sessions(&self, max_age: Duration) -> SqlResult<u64>
pub fn prune_sessions(&self, max_age: Duration) -> SqlResult<u64>
Prune old sessions based on a retention policy applied to session age
Sourcepub fn to_chat_messages(
&self,
session_id: &str,
policy: Option<RetentionPolicy>,
) -> SqlResult<Vec<ChatMessage>>
pub fn to_chat_messages( &self, session_id: &str, policy: Option<RetentionPolicy>, ) -> SqlResult<Vec<ChatMessage>>
Convert stored messages to ChatMessage format for the LLM
Sourcepub fn import_memory(
&self,
session_id: &str,
memory: &ConversationMemory,
system_prompt: &str,
) -> SqlResult<()>
pub fn import_memory( &self, session_id: &str, memory: &ConversationMemory, system_prompt: &str, ) -> SqlResult<()>
Import messages from a ConversationMemory into a session
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for ConversationStore
impl !RefUnwindSafe for ConversationStore
impl !Sync for ConversationStore
impl !UnwindSafe for ConversationStore
impl Send for ConversationStore
impl Unpin for ConversationStore
impl UnsafeUnpin for ConversationStore
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§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