2 stable releases

1.0.1 Oct 5, 2023
1.0.0 Sep 30, 2023

#983 in Encoding

23 downloads per month

MIT license

19KB

ahri

ahri is a database ๐Ÿ—ณ

Completed
  • Database structure
  • Async support
  • Serialization / Deserialization
  • ACID transactions
Example
use ahri::Table;
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Debug)]
struct Book {
    name: String,
    year: u16,
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let default_book = Book {
        name: "Unknown Book".to_string(),
        year: 0,
    };

    let mut bookshelf = Table::from_structure(default_book);

    for i in 0..7 {
        let book_name = format!("Harry Potter {}", i + 1);
        let new_book = Book {
            name: book_name.clone(),
            year: 1997 + i as u16,
        };
        bookshelf.insert(&book_name, new_book);
    }

    println!("Bookshelf: {:#?}", bookshelf);

    Ok(())
}
Result
Bookshelf: Table {
    default: Book {
        name: "Unknown Book",
        year: 0,
    },
    rows: {
        "Harry Potter 3": Book {
            name: "Harry Potter 3",
            year: 1999,
        },
        "Harry Potter 6": Book {
            name: "Harry Potter 6",
            year: 2002,
        },
        "Harry Potter 7": Book {
            name: "Harry Potter 7",
            year: 2003,
        },
        "Harry Potter 2": Book {
            name: "Harry Potter 2",
            year: 1998,
        },
        "Harry Potter 4": Book {
            name: "Harry Potter 4",
            year: 2000,
        },
        "Harry Potter 5": Book {
            name: "Harry Potter 5",
            year: 2001,
        },
        "Harry Potter 1": Book {
            name: "Harry Potter 1",
            year: 1997,
        },
    },
}
Performances

creation of 4 tables and for each inserting 1000 entries in 766 ยตs

Dependencies

~1โ€“1.7MB
~40K SLoC