use serde_json::json;
use std::io::Result;
use std::thread;
use std::time::Duration;
use transientdb::{MemoryConfig, MemoryStore, TransientDB};
fn memory_store_example() -> Result<()> {
let config = MemoryConfig {
write_key: "analytics-key".into(),
max_items: 1000, max_fetch_size: 1024 * 64, };
let store = MemoryStore::new(config);
let db = TransientDB::new(store);
println!("Adding user events...");
for i in 0..5 {
let event = json!({
"event_type": "page_view",
"user_id": format!("user_{}", i),
"timestamp": chrono::Utc::now().to_rfc3339(),
"page": format!("/product/{}", i),
"metadata": {
"browser": "Chrome",
"platform": "macOS",
"screen_size": "1920x1080"
}
});
db.append(event)?;
thread::sleep(Duration::from_millis(100)); }
println!("Fetching and processing events...");
while let Some(result) = db.fetch(Some(2), None)? {
if let Some(data) = result.data {
println!("Processing batch: {}", serde_json::to_string_pretty(&data)?);
if let Some(removable) = result.removable {
db.remove(&removable)?;
println!("Removed processed events from store");
}
}
}
Ok(())
}
fn main() -> Result<()> {
println!("=== Memory Store Example ===");
memory_store_example()?;
Ok(())
}