edgechain-memory 0.1.0

Session and persistent memory stores for EdgeChain
Documentation

edgechain-memory

Session and persistent memory stores for the EdgeChain SDK.

What's in this crate

  • MemoryStore trait — async key-value store with tag-based search
  • SessionMemory — in-process RwLock<HashMap>, cleared on drop
  • SqliteMemoryStore — persistent SQLite store via rusqlite (bundled)

Quick start

[dependencies]
edgechain-memory = "0.1"
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }
serde_json = "1"
use edgechain_memory::{MemoryStore, SqliteMemoryStore};
use serde_json::json;

#[tokio::main]
async fn main() {
    let store = SqliteMemoryStore::open("app.db").unwrap();

    store.set("user:name", json!("Praveen")).await.unwrap();
    store.set_tagged("order:42", json!({ "item": "cement", "qty": 200 }),
        vec!["order".into(), "pending".into()]).await.unwrap();

    let entry = store.get("user:name").await.unwrap().unwrap();
    println!("{}", entry.value); // "Praveen"

    let orders = store.search_by_tag("pending").await.unwrap();
    println!("{} pending orders", orders.len());
}

Memory key conventions

Prefix Purpose
session:<id>:<key> Per-session ephemeral data
user:<key> Long-term user preferences
entity:<type>:<id> Domain entities
plugin:<id>:<key> Plugin-private storage

License

MIT OR Apache-2.0