A simple embedded struct database wrapper based on Sled.
basic usage
let db_name = String::from("test_db");
let account = Account {
username: String::from("johndoe"),
password: String::from("secretpassword"),
age: 30,
};
let db = AvlonDB::new(db_name);
db.save(account.username.clone(), account)?;
println!("Account saved to database!");
if let Some(loaded_account) = db.load::<Account>("johndoe")? {
println!("Account loaded from database: {:?}", loaded_account);
} else {
println!("Account not found in the database.");
}
let updated_account = Account {
username: String::from("joker"),
password: String::from("123654987"),
age: 99,
};
db.update("johndoe", updated_account)?;
if let Some(loaded_account) = db.load::<Account>("johndoe")? {
println!("Updated account loaded from database: {:?}", loaded_account);
} else {
println!("Account not found in the database.");
}
db.remove("johndoe")?;
if let Some(loaded_account) = db.load::<Account>("johndoe")? {
println!("Account loaded from database after removal: {:?}", loaded_account);
} else {
println!("Account successfully removed from the database.");
}
range usage
use serde::{Deserialize, Serialize};
use avlon_db::AvlonDB;
#[derive(Debug, Serialize, Deserialize)]
struct Data {
name: String,
value: i32,
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
let db = AvlonDB::new("test_db".to_string());
for i in 0..10 {
let data = Data {
name: format!("name_{}", i),
value: i,
};
db.save(format!("key_{}", i), data)?;
}
let data = db.load::<Data>("key_0")?;
println!("{:?}", data);
let results = db.load_range::<Data>("key_0", "key_9")?;
for data in results {
println!("{:?}", data);
}
Ok(())
}