TinyBase

TinyBase is an in-memory database built with Rust, based on the sled embedded key-value store. It supports indexing and constraints, allowing you to create efficient queries and ensure data consistency.

Features

Installation & Setup

To use TinyBase in your Rust project, add the following line to your Cargo.toml file's [dependencies] section.:

toml tinybase = { version = "0.1.5", features = ["derive"] }

Usage Example

Here's a simple example demonstrating how to use TinyBase with a Person struct.

```rust

[derive(Repository, Serialize, Deserialize, Debug, Clone)]

struct Person { #[index] #[unique] pub name: String, #[index] pub last_name: String, pub age: u8, }

fn main() { let db = TinyBase::new(Some("./people"), true); let people = Person::init(&db, "people").unwrap();

init_example_data(&people);

println!(
    "Found all the Smith's:\n{:#?}",
    people.find_by_last_name("Smith".to_owned()).unwrap()
);

println!(
    "Replaced name of John OR lastname Jones with Kevin Spacey:\n{:#?}",
    QueryBuilder::new(&people)
        .with_condition(ConditionBuilder::or(
            ConditionBuilder::by(&people.name, "John".to_string()),
            ConditionBuilder::by(&people.last_name, "Jones".to_string()),
        ))
        .update(|record| Person {
            last_name: "Brown".to_owned(),
            ..record
        })
        .unwrap()
);

} ```

This example demonstrates how to create a new TinyBase instance, open a table (or create one if it doesn't exist), add indexes and constraints, and perform basic operations (insert/select).

You can view more examples in examples