2 releases

Uses new Rust 2024

0.1.1 Mar 24, 2025
0.1.0 Mar 23, 2025

#856 in Database interfaces

Download history 174/week @ 2025-03-19 44/week @ 2025-03-26

218 downloads per month

Custom license

26KB
603 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

~195–620KB
~15K SLoC