1 unstable release

0.0.2 Oct 21, 2020

#1238 in Database interfaces

MIT/Apache

47KB
1K SLoC

jrdb

Joel Rust Database, a document oriented NoSql database created for learning purpose

Currently support CRUD. Nested document/ collection and indexed collection not yet support.

Example usage:

use jrdb::jrdb_type::{AddGetValue, JrCollection, JrDocument};
use jrdb::Database;

use jrdb::{exp, jr_doc};

fn main() {
  //create file "main.db" if not exist
  let mut db: Database = Database::from("main");

  //use macro to create JrDocument
  let doc = jr_doc! {
    "name"; String => "Mathew".into(),
    "pass"; String => "ILoveERD".into(),
    "age"; i64 => 400,
  };

  //basic way to create JrDocument
  let mut doc2 = JrDocument::new();
  doc2.add_value("name", String::from("Joel"));
  doc2.add_value("pass", String::from("ILoveErd"));
  doc2.add_value("age", 30);

  //create collection "users" and admin if not exist
  db.insert("users", doc)
    .insert("admins", doc2)
    .execute();

  //update "users" with condition
  db.update(
    "users",
    jr_doc! {
      "name"; String => "Jason".into()
    },
  )
  .condition(exp! {"name" ;== "'Joel'"})
  .execute();

  //select "users"
  let collection: JrCollection = db.select("users").execute();
  collection.print(0);

  //select "admins"
  let collection: JrCollection = db.select("admins").execute();
  collection.print(0);

  //delete with condition
  db.delete("users")
    .condition(exp! {"name" ;== "'Jason'"})
    .execute();

  let collection: JrCollection = db.select("users").execute();
  collection.print(0);
}

Next Scope

  • Select data with specific key
  • Fix spaghetti code
  • Create documentation

Dependencies

~120KB