Crates.io | tinybase-derive |
lib.rs | tinybase-derive |
version | 0.1.5 |
source | src |
created_at | 2023-05-09 00:26:17.14567 |
updated_at | 2023-05-09 18:09:20.09514 |
description | A tiny embedded database built in Rust. |
homepage | |
repository | https://github.com/JSH32/tinybase.git |
max_upload_size | |
id | 860170 |
size | 12,560 |
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.
To use TinyBase in your Rust project, add the following line to your Cargo.toml file's [dependencies]
section.:
tinybase = { version = "0.1.5", features = ["derive"] }
Here's a simple example demonstrating how to use TinyBase with a Person
struct.
#[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