use async_trait::async_trait;
use super::{MemoryEntry, MemoryError, MemoryService};
#[derive(Debug, Clone)]
pub struct VertexAiMemoryBankConfig {
pub project: String,
pub location: String,
pub memory_bank: String,
}
#[derive(Debug, Clone)]
pub struct VertexAiMemoryBankService {
config: VertexAiMemoryBankConfig,
}
impl VertexAiMemoryBankService {
pub fn new(config: VertexAiMemoryBankConfig) -> Self {
Self { config }
}
pub fn memory_bank(&self) -> &str {
&self.config.memory_bank
}
}
#[async_trait]
impl MemoryService for VertexAiMemoryBankService {
async fn store(&self, _session_id: &str, _entry: MemoryEntry) -> Result<(), MemoryError> {
Ok(())
}
async fn get(&self, _session_id: &str, _key: &str) -> Result<Option<MemoryEntry>, MemoryError> {
Ok(None)
}
async fn list(&self, _session_id: &str) -> Result<Vec<MemoryEntry>, MemoryError> {
Ok(vec![])
}
async fn search(
&self,
_session_id: &str,
_query: &str,
) -> Result<Vec<MemoryEntry>, MemoryError> {
Ok(vec![])
}
async fn delete(&self, _session_id: &str, _key: &str) -> Result<(), MemoryError> {
Ok(())
}
async fn clear(&self, _session_id: &str) -> Result<(), MemoryError> {
Ok(())
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn service_metadata() {
let svc = VertexAiMemoryBankService::new(VertexAiMemoryBankConfig {
project: "test-project".into(),
location: "us-central1".into(),
memory_bank: "test-bank".into(),
});
assert_eq!(svc.memory_bank(), "test-bank");
}
}