Deeb - JSON Database
Prounced D-B, Deeb is an Acid Compliant JSON based database for small
websites and fast prototyping.
Inspired by simplicity of Mongo and light weight of SqLite, Deeb is a tool
that turns a set of JSON files into a database.
While performing migrations will be possible, Deeb's JSON database
allows you to simply open a json file and edit as needed.
Quick Start
use deeb::*;
use serde_json::json;
use anyhow::Error;
#[tokio::main]
async fn main() -> Result<(), Error> {
let db = Deeb::new();
db.add_instance("test", "./user.json", vec!["user".into()])
.await?;
db.add_instance("test2", "./comment.json", vec!["comment".into()])
.await?;
let user = Entity::from("user");
let comment = Entity::from("comment");
db.insert(&user, json!({"id": 1, "name": "Joey", "age": 10}), None).await?;
db.find_one(&user, Query::Eq("name".into(), json!("Joey")), None).await?;
let mut transaction = db.begin_transaction().await;
db.insert(&user, json!({"id": 1, "name": "Steve", "age": 3}), Some(&mut transaction)).await?;
db.insert(&user, json!({"id": 2, "name": "Johnny", "age": 3}), Some(&mut transaction)).await?;
db.insert(&comment, json!({"user_id": 1, "comment": "Hello"}), Some(&mut transaction)).await?;
db.insert(&comment, json!({"user_id": 1, "comment": "Hi"}), Some(&mut transaction)).await?;
let query = Query::Eq("name".into(), json!("Steve"));
let result = db.find_one(&user, query, Some(&mut transaction)).await?;
let query = Query::Eq("name".into(), json!("Steve"));
let update = json!({"name": "Steve", "age": 3});
db.update_one(&user, query, update, Some(&mut transaction)).await?;
let query = Query::Eq("name".into(), json!("Johnny"));
db.delete_one(&user, query, Some(&mut transaction)).await?;
db.commit(&mut transaction).await?;
Ok(())
}