2 releases
Uses new Rust 2024
0.1.1 | Mar 24, 2025 |
---|---|
0.1.0 | Mar 23, 2025 |
#856 in Database interfaces
218 downloads per month
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