avlon-db

Crates.ioavlon-db
lib.rsavlon-db
version0.2.2
sourcesrc
created_at2024-09-02 07:18:43.371027
updated_at2024-09-04 03:30:25.815508
descriptionA simple embedded struct database wrapper based on Sled.
homepage
repositoryhttps://github.com/avlon-projects/avlon_db.git
max_upload_size
id1360226
size543,156
暴走大仙 (bzdx)

documentation

https://docs.rs/avlon_db

README

A simple embedded struct database wrapper based on Sled.

basic usage

// Define the database name
let db_name = String::from("test_db");

// Create an instance of Account
let account = Account {
    username: String::from("johndoe"),
    password: String::from("secretpassword"),
    age: 30,
};

// Initialize the database
let db = AvlonDB::new(db_name);

// Save the account to the database
db.save(account.username.clone(), account)?;
println!("Account saved to database!");

// Load the account from the 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.");
}

// Update the account in the database
let updated_account = Account {
    username: String::from("joker"),
    password: String::from("123654987"),
    age: 99,
};
db.update("johndoe", updated_account)?;

// Load the updated account from the database
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.");
}

// Remove the account from the database
db.remove("johndoe")?;

// Attempt to load the account again after removal
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());

    // Insert some data into the database
    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);

    // Load a range of data from the database
    let results = db.load_range::<Data>("key_0", "key_9")?;
    for data in results {
        println!("{:?}", data);
    }

    Ok(())
}
Commit count: 0

cargo fmt