code_mesh_core/memory/
mod.rs1use async_trait::async_trait;
4use serde::{Deserialize, Serialize};
5use std::time::Duration;
6
7#[async_trait]
9pub trait Memory: Send + Sync {
10 async fn store(&self, key: &str, value: MemoryValue, ttl: Option<Duration>) -> crate::Result<()>;
12
13 async fn retrieve(&self, key: &str) -> crate::Result<Option<MemoryValue>>;
15
16 async fn delete(&self, key: &str) -> crate::Result<()>;
18
19 async fn search(&self, pattern: &str, limit: usize) -> crate::Result<Vec<(String, MemoryValue)>>;
21
22 async fn list_namespace(&self, namespace: &str) -> crate::Result<Vec<String>>;
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize)]
28pub struct MemoryValue {
29 pub data: serde_json::Value,
30 pub metadata: MemoryMetadata,
31}
32
33#[derive(Debug, Clone, Serialize, Deserialize)]
34pub struct MemoryMetadata {
35 pub created_at: chrono::DateTime<chrono::Utc>,
36 pub updated_at: chrono::DateTime<chrono::Utc>,
37 pub access_count: u64,
38 pub tags: Vec<String>,
39}