use plugmem_host::{Config, Database, HostError, RememberInput};
fn main() -> Result<(), HostError> {
let dir = std::env::temp_dir().join(format!("plugmem-integrity-{}", std::process::id()));
std::fs::create_dir_all(&dir).unwrap();
let src = dir.join("agent.plugmem");
let dst = dir.join("agent.recovered.plugmem");
{
let (db, _) = Database::open(&src, Config::default())?;
for i in 0..10u64 {
db.remember(RememberInput::text(i + 1, "a durable fact worth keeping"))?;
}
db.checkpoint(1_784_000_000_000)?;
println!("wrote {} facts", db.stats().facts);
}
{
let ro = Database::open_readonly(&src, Config::default())?;
let mut last = None;
for step in ro.scrub()? {
last = Some(step?); }
if let Some(p) = last {
println!(
"scrub ok: {}/{} bytes verified",
p.done_bytes, p.total_bytes
);
}
ro.verify()?;
println!("verify ok");
}
let report = Database::recover(&src, &dst, Config::default(), 1_784_000_100_000)?;
println!(
"recover: kept {}, dropped {} text + {} vector (source preserved)",
report.kept, report.dropped_text, report.dropped_vector
);
std::fs::remove_dir_all(&dir).ok();
Ok(())
}