84 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
use ourdb::{OurDB, OurDBConfig, OurDBSetArgs};
 | 
						|
use std::env::temp_dir;
 | 
						|
use std::time::{SystemTime, UNIX_EPOCH};
 | 
						|
 | 
						|
fn main() -> Result<(), Box<dyn std::error::Error>> {
 | 
						|
    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(())
 | 
						|
}
 |