start 0.1.2

Start – Your embedded database.
Documentation

IN DEVELOPMENT DON'T USE IN PRODUCTION (wait stabilization)

  • database in development and might rapidly change syntax

in_memory/embedded (single file) database

Example of using in code

let mut db = start::in_memory();

#[derive(Serialize, Deserialize, Debug)]
struct Agent {
    name: String,
    r#type: String,
}

db
    .insert(Agent {
        name: "ChatGPT".into(),
        r#type: "AI".into(),
    })
    .into("agents")?;

db
    .insert(Agent {
        name: "Cloude".into(),
        r#type: "AI".into(),
    })
    .into("agents")?;

let many: Vec<Agent> = db.find().from("agents")?;
for doc in many {
    println!("{:?}", doc);
}

quick roadmap:

documnet [x] collection [x] findCollection [x] insertCollectionByOffset [x] insertOne [x] insertCollection [x] insertDML [x] find [x] findDML [x] find({args}) [ ] storage-pages [ ] limit [ ] insertMany [ ] bson [ ] delete [ ]

How does it works?

Based on start-storage crate, database first keeps 100 bytes header.

Next it (sys-master) contains tables, first system-tables (like sys-master, then sys-trash)

At second, it keeps user tables. Each table is linked list.