3 releases

Uses new Rust 2024

0.1.2 Apr 9, 2025
0.1.1 Mar 24, 2025
0.1.0 Mar 23, 2025

#869 in Database interfaces

Download history 198/week @ 2025-03-22 20/week @ 2025-03-29 119/week @ 2025-04-05 23/week @ 2025-04-12 4/week @ 2025-04-19 10/week @ 2025-05-10 1/week @ 2025-05-17

141 downloads per month

Custom license

33KB
832 lines

SomeDb - simple database

A simple database for storing data.

Usage

use somedb::entity;
#[entity]
#[derive(Debug, PartialEq)]
struct MyStruct {
    #[entity_id(auto_generate)]
    id: i32,
    foo: String,
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut db = somedb::db::Database::default(true)?;

    let entity = MyStruct {
        id: 0, // this will be ignored because auto_generate is active
        foo: "bar".to_string(),
    };

    let stored_entity = db.store(entity)?;

    let loaded_entity = db.find_by_id::<MyStruct>(stored_entity.id)?.unwrap();

    assert_eq!(stored_entity, loaded_entity);

    Ok(())
}

SomeDb

Extremely simple database to store data.

Usage

use somedb::entity;
#[entity]
#[derive(Debug, PartialEq)]
struct MyStruct {
    #[entity_id(auto_generate)]
    id: i32,
    foo: String,
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut db = somedb::db::Database::default(true)?;

    let entity = MyStruct {
        id: 0, // this will be ignored because auto_generate is active
        foo: "bar".to_string(),
    };

    let stored_entity = db.store(entity)?;

    let loaded_entity = db.find_by_id::<MyStruct>(stored_entity.id)?.unwrap();

    assert_eq!(stored_entity, loaded_entity);

    Ok(())
}

Features

  • Store entities
  • Load all entities
  • Load entities by id
  • Delete entities by id
  • general query iterator

Future Improvements

  • improved storage model to avoid loading entire database into memory

Dependencies

~185–600KB
~14K SLoC