use std::sync::Arc;
use async_trait::async_trait;
use synaptic_core::{MemoryStore, Message, SynapticError};
pub struct ConversationBufferMemory {
store: Arc<dyn MemoryStore>,
}
impl ConversationBufferMemory {
pub fn new(store: Arc<dyn MemoryStore>) -> Self {
Self { store }
}
}
#[async_trait]
impl MemoryStore for ConversationBufferMemory {
async fn append(&self, session_id: &str, message: Message) -> Result<(), SynapticError> {
self.store.append(session_id, message).await
}
async fn load(&self, session_id: &str) -> Result<Vec<Message>, SynapticError> {
self.store.load(session_id).await
}
async fn clear(&self, session_id: &str) -> Result<(), SynapticError> {
self.store.clear(session_id).await
}
}