ahri 1.0.1

ahri is a database 🗳
Documentation
use ahri::Table;
use serde::{Deserialize, Serialize};

const FOLDER: &str = "./prototyping/";
const FILE_PATH: &str = "./prototyping/test.ahri";

#[derive(Serialize, Deserialize, Debug)]
struct User {
    name: String,
    age: u8,
}

#[test]
fn serialize_deserialize() {
    std::fs::create_dir_all(FOLDER).unwrap();

    let structure = User {
        name: "Undefined".to_string(),
        age: 0,
    };

    let mut table = Table::from_structure(structure);
    assert!(table.row_count() == 0);
    table.to_file(FILE_PATH).unwrap();
    let serialized_file_size = std::fs::metadata(FILE_PATH).unwrap().len();

    table.insert(
        "bob",
        User {
            name: "Bob".to_string(),
            age: 30,
        },
    );
    table.insert(
        "alice",
        User {
            name: "Alice".to_string(),
            age: 20,
        },
    );
    table.to_file(FILE_PATH).unwrap();
    let new_serialized_file_size = std::fs::metadata(FILE_PATH).unwrap().len();

    assert!(new_serialized_file_size > serialized_file_size);

    match Table::<User>::from_file(FILE_PATH) {
        Ok(table) => assert!(table.row_count() == 2),
        Err(err) => panic!("{}", err),
    }

    std::fs::remove_dir_all(FOLDER).unwrap();
}

#[test]
fn create_table() {
    let structure = User {
        name: "Undefined".to_string(),
        age: 0,
    };

    let mut table = Table::from_structure(structure);
    assert!(table.row_count() == 0);

    table.insert(
        "bob",
        User {
            name: "Bob".to_string(),
            age: 30,
        },
    );
    table.insert(
        "alice",
        User {
            name: "Alice".to_string(),
            age: 20,
        },
    );
    assert!(table.row_count() == 2);
}