use ourdb::{OurDB, OurDBConfig, OurDBSetArgs}; use std::env::temp_dir; use std::time::{SystemTime, UNIX_EPOCH}; fn main() -> Result<(), Box> { println!("Standalone OurDB Example"); println!("=======================\n"); // Create a temporary directory for the database let timestamp = SystemTime::now() .duration_since(UNIX_EPOCH) .unwrap() .as_secs(); let db_path = temp_dir().join(format!("ourdb_example_{}", timestamp)); std::fs::create_dir_all(&db_path)?; println!("Creating database at: {}", db_path.display()); // Create a new OurDB instance let config = OurDBConfig { path: db_path.clone(), incremental_mode: true, file_size: None, keysize: None, reset: Some(false), }; let mut db = OurDB::new(config)?; println!("Database created successfully"); // Store some data let test_data = b"Hello, OurDB!"; let id = db.set(OurDBSetArgs { id: None, data: test_data })?; println!("\nStored data with ID: {}", id); // Retrieve the data let retrieved = db.get(id)?; println!("Retrieved data: {}", String::from_utf8_lossy(&retrieved)); // Update the data let updated_data = b"Updated data in OurDB!"; db.set(OurDBSetArgs { id: Some(id), data: updated_data })?; println!("\nUpdated data with ID: {}", id); // Retrieve the updated data let retrieved = db.get(id)?; println!("Retrieved updated data: {}", String::from_utf8_lossy(&retrieved)); // Get history let history = db.get_history(id, 2)?; println!("\nHistory for ID {}:", id); for (i, data) in history.iter().enumerate() { println!(" Version {}: {}", i + 1, String::from_utf8_lossy(data)); } // Delete the data db.delete(id)?; println!("\nDeleted data with ID: {}", id); // Try to retrieve the deleted data (should fail) match db.get(id) { Ok(_) => println!("Data still exists (unexpected)"), Err(e) => println!("Verified deletion: {}", e), } println!("\nExample completed successfully!"); // Clean up db.close()?; std::fs::remove_dir_all(&db_path)?; println!("Cleaned up database directory"); Ok(()) }